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

标签 c++ unit-testing dll mfc

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

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

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

我认为这可能是一个远景,但我不知道如何才能在 DLL 中正确运行测试。可以吗?有没有更好的办法?

最佳答案

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

关于通用测试的更多信息

使用通用测试来包装控制台应用程序或测试工具控制台

• 从命令行运行

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

• 仅对控制台应用程序进行正面测试;测试工具可能包含负面测试。

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

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

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

• vstest.console GenericTest1.GenericTest

注意:为您的 EXE 设置足够长的“运行持续时间”。

关于c++ - 是否可以将 MS 单元测试从 EXE 转发到 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33904817/

相关文章:

c++ - MFC 多线程 : AfxBeginThread vs Boost. 线程?

java - Junit 预期异常 : expect an exact Exception object

MySQL 编译库

c - Visual Studio - 添加 netCDF 库

c++ - NTL 库中的扩展多项式

c++ - 将 cv::Mat 传递给 labview

c++ - 在 Smalltalk 中设计事务管理器

c# - 带有 NUnit 和 AutoData 的 AutoFixture 抛出 TargetParameterCountException

python - 跳过没有装饰器语法的单元测试测试

DLL 导出 __declspec(dllexport) 不起作用