gpt4 book ai didi

c++ - 谷歌在同一解决方案中测试多个 C++ 项目

转载 作者:行者123 更新时间:2023-11-28 00:15:03 25 4
gpt4 key购买 nike

我有例如解决方案 SolA 中的 10 个 C++ 项目,并希望使用 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;
}

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

感谢任何帮助

最佳答案

这两种方法都应该有效;这仅取决于您的喜好。我倾向于遵循如下项目结构:

Solution
|-- ProjectA
|-- ProjectATests
|-- ProjectB
|-- ProjectBTests
`-- TestLib

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

  1. 只运行与您的更改相关的测试会更容易。
  2. 开发工作流程更加高效,因为在对一个库进行更改时,您只需重新构建并链接相应的测试。

无论您创建单个测试项目还是多个测试项目,我都绝对建议将项目放在与被测代码相同的解决方案中。此外,我建议为测试项目设置一个构建后步骤,该步骤运行测试并在未通过时构建失败。

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

关于c++ - 谷歌在同一解决方案中测试多个 C++ 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30860880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com