GoogleTest在同一解决方案中的几个C ++项目

时间:2015-06-16 07:03:41

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

我有例如解决方案中的10个C ++项目 SolA 并希望使用GoogleTest对它们进行UnitTest:





所以我创建了一个新的解决方案 SolATest SolA 中的每个项目 SolATest





这是一个很好的加载方法在SolATest / Projects中隐含的SolA库并将每个测试项目作为可执行文件运行:




  #include< iostream>
 #include“gmock / gmock.h“
 #include”gtest / gtest.h“

 int main(int argc,char ** argv)
 {
 :: testing :: InitGoogleMock(& argc,argv); 
 int value = RUN_ALL_TESTS();

的std ::的getchar(); //保持终端打开

返回值;
}
  




或是否有更方便的方式 - >例如在 SolATest 中只有一个可执行文件,并将其他测试项目作为库加载(恕我直言,让一个测试项目中的所有cpp文件都令人困惑)?!

&#xA;&#xA; < p> Thx任何帮助

&#xA;

1 个答案:

答案 0 :(得分:3)

任何一种方法都应该有效;这取决于你的偏好。我倾向于遵循以下项目结构:

assert

项目(ProjectA,ProjectB)是库,每个测试项目(ProjectATests,ProjectBTests)都是可执行文件。请注意,我们将单元测试分成单独的解决方案;它们始终与生产代码一起构建和运行。我喜欢这种结构有几个原因:

  1. 只运行与您的更改相关的测试更容易。
  2. 开发工作流程效率更高,因为在更改一个库时,您只需重建并链接相应的测试。
  3. 无论您是创建单个测试项目还是多个,我肯定会建议将项目放在与测试代码相同的解决方案中。此外,我建议为运行测试的测试项目设置一个构建后步骤,如果它们没有通过,则会使构建失败。

    最后,您可能想知道'TestLib'项目。我将它用于gtest / gmock融合源,main()的定义以及测试之间共享的任何其他实用程序。这消除了(或至少减少)各种测试项目之间的代码重复。