【问题标题】:GoogleTest several C++ projects in the same solution谷歌在同一个解决方案中测试多个 C++ 项目
【发布时间】:2015-06-16 07:03:40
【问题描述】:

我有例如解决方案 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 文件都放在一个测试项目中令人困惑)?!

感谢任何帮助

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    无论您创建一个或多个测试项目,我都绝对建议将项目与被测代码放在同一个解决方案中。此外,我建议为运行测试的测试项目设置一个构建后步骤,如果它们没有通过,则构建失败。

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

    【讨论】:

      猜你喜欢
      • 2016-04-27
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多