是否可以将MS单元测试从EXE转发到DLL

Would it be possible to forward MS Unit tests from an EXE to a DLL?

本文关键字:EXE 转发 DLL 单元测试 MS 是否      更新时间:2023-10-16

我有一个应用程序,其中有一堆代码,其中包含一堆非隔离组件。这使得进行一些单元测试变得困难。因此,除了在它们自己的单独测试DLL中进行一些单元测试外,我还试图在应用程序DLL中创建一些测试。应用程序DLL通常从应用程序EXE调用。

出于某种背景,这段代码已经用原生C++编写了20多年。我无法直接执行DLL中的测试,因为框架没有设置,所以在DLL中执行的任何调用都不会正确执行。我已经尝试过这样做,但没有成功,但也许我需要对MFC框架有更基本的了解才能做到这一点。

一位同事建议,也许可以让vstest.console以某种方式通过EXE运行测试,在那里可以启动框架,通过EXE运行这些测试,然后将其转发到DLL,然后通过EXE将测试结果返回到vstest.console,从而有效地使EXE成为某种代理。

我想这可能是一个漫长的过程,但我不知道如何在DLL中正确运行测试。能做到吗?有更好的方法吗?

对于遗留EXE,您可以使用Generic Test(用于控制台应用程序)或Coded UI Test(用于GUI应用程序)。从技术上讲,通用测试或编码UI测试是系统级测试。您仍然可以获得这两个测试的代码覆盖率。

关于通用测试的更多信息

使用通用测试包装控制台应用程序或测试的控制台

•从命令行运行

•返回错误代码:0<-通过非零<-失败

•仅针对控制台应用程序的阳性测试;测试线束中可能包含阴性测试。

Visual Studio像对待其他测试一样对待通用测试,但是

•将通用测试添加到单元测试项目类型中

•命令行必须运行.GenericTest文件,而不是UnitTest1.dll

•vstest.console GenericTest1.GenericTest

注意:为EXE设置足够长的"运行持续时间"