将VS Native C ++单元测试添加到现有项目中?

时间:2017-04-26 19:13:26

标签: unit-testing visual-c++ visual-studio-2015

我们在VS 2015中有一个现有的本地C ++可执行项目。我希望能够对它运行一些单元测试。到目前为止,我发现的所有示例都涉及添加一个单独的项目,该项目链接到可执行项目中的目标文件。

我们对这种方法有几个问题,我想知道是否有办法在可执行项目中运行单元测试,而不是添加单独的单元测试项目。

我们与单独的单元测试项目有关的问题是: 1)我们必须确保配置完全相同才能获得任何编译。即定义必须匹配,包括路径等。 2)对项目的任何更改(包括添加输出文件)都涉及更新单元测试项目的配置。

理想情况下,我们可以将实现TEST_CLASS类的.cpp文件添加到可执行项目中,然后从那里运行它们。这可能吗?如果是这样,怎么做。

更新:我已经弄清楚如何将单元测试添加到我们的可执行项目中,但现在每次我尝试运行测试时都会收到错误" vstest.executionengine.exe已停止工作&#34 ;。当我打开dmp文件文件:/// C:/Users/USERNAME/AppData/Local/CrashDumps/vstest.executionengine.exe.14420.dmp

异常信息只是"线程试图读取或写入没有适当访问权限的虚拟地址"

1 个答案:

答案 0 :(得分:0)

更好的问题是

  

如何使用VS Native C ++单元测试测试现有的可执行项目

诸如“挤压单元测试”这样的答案将是完全错误的。

您需要执行2项更改:使可执行项目中的代码可以从外部正确访问,并创建一个测试该代码的单元测试项目。

  • 首先要确保配置所有这些项目 会完全一样的。正如您所提到的,尝试手动同步它相当麻烦。然而VS提供了一种简单的方法来处理这个问题:属性表。打开主菜单 - >查看 - >物业经理。使用所有相关项目参数创建新的属性表。将此工作表应用于所有相关项目,以便始终保持配置同步。
  • 创建一个单独的静态库项目并移动要在那里测试的东西。通常,可执行项目应该只有一个定义入口点的转换单元而不是其他任何内容。将可执行项目链接到此库,以便它继续工作。现在,您的可执行文件使用的代码已准备好在外面使用。
  • 创建单元测试项目并将其链接到静态库。现在你可以写一些测试了。