leo*_*n22 1 c++ unit-testing googletest visual-studio
我在一个解决方案中有 10 个 C++ 项目,SolA并且想用 GoogleTest 对它们进行单元测试:
所以我创建了一个新的解决方案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(); // to hold the terminal open
return value;
}
Run Code Online (Sandbox Code Playgroud)
或者是否有更方便的方法 -> 例如,只有一个可执行文件SolATest并将其他测试项目作为库加载(恕我直言,在一个测试项目中包含所有 cpp 文件令人困惑)?!
感谢任何帮助
任何一种方法都应该有效;这仅取决于您的偏好。我倾向于遵循如下的项目结构:
Solution
|-- ProjectA
|-- ProjectATests
|-- ProjectB
|-- ProjectBTests
`-- TestLib
Run Code Online (Sandbox Code Playgroud)
其中项目(ProjectA、ProjectB)是库,每个测试项目(ProjectATests、ProjectBTests)都是可执行文件。请注意,我们不会将单元测试分成单独的解决方案;它们总是与生产代码一起构建和运行。我喜欢这种结构有几个原因:
无论您创建单个测试项目还是多个测试项目,我绝对建议将项目放在与被测代码相同的解决方案中。此外,我建议为运行测试的测试项目设置一个构建后步骤,如果它们不通过则构建失败。
最后,您可能想知道“TestLib”项目。我将它用于 gtest/gmock 融合源、main() 的定义以及在测试之间共享的任何其他实用程序。这消除了(或至少减少了)各种测试项目之间的代码重复。
| 归档时间: |
|
| 查看次数: |
1068 次 |
| 最近记录: |