我有例如解决方案中的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文件都令人困惑)?!
答案 0 :(得分:3)
任何一种方法都应该有效;这取决于你的偏好。我倾向于遵循以下项目结构:
assert
项目(ProjectA,ProjectB)是库,每个测试项目(ProjectATests,ProjectBTests)都是可执行文件。请注意,我们不将单元测试分成单独的解决方案;它们始终与生产代码一起构建和运行。我喜欢这种结构有几个原因:
无论您是创建单个测试项目还是多个,我肯定会建议将项目放在与测试代码相同的解决方案中。此外,我建议为运行测试的测试项目设置一个构建后步骤,如果它们没有通过,则会使构建失败。
最后,您可能想知道'TestLib'项目。我将它用于gtest / gmock融合源,main()的定义以及测试之间共享的任何其他实用程序。这消除了(或至少减少)各种测试项目之间的代码重复。