【问题标题】:Including google tests in Qt project在 Qt 项目中包含谷歌测试
【发布时间】:2018-04-10 14:46:02
【问题描述】:

我正在尝试使用 Google 测试开始测试我的 Qt 项目。我读了Qt Docs,但只有描述,如何创建和运行测试,而不是集成。所以我有一些问题。

  1. 我应该创建子项目还是单独创建一个?我应该把测试项目放在哪里?

现在我以这种方式存储测试项目:

project.pro
|
 --- subproject1.pri
|
 --- subproject2.pri
|
| ...
|
 --- test_project.pri
    |
     --- init_tests.cpp

这是正确的测试方式吗?

  1. 我应该从哪里运行此代码?

::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS();

现在我从init_tests.cpp 运行它。然后我从main 函数调用init_tests。这似乎是错误的,但我不知道另一种方法。

  1. 那么如果我使用前面描述的方式来集成测试,我该如何从部署中移除它?

  2. 我应该将测试放在 git repo 的什么位置?我为我的测试创建了分支,然后将其合并到 master。对吗?

感谢您的回答,对不起我的英语不好。

【问题讨论】:

  • 既然 Qt 已经内置了一个测试框架,为什么还要引入一个单独的测试框架?
  • 因为如果我要写非qt项目,只要把google测试库集成进去就熟悉了。
  • 顺便说一句,QtCreator 支持 google 测试集成,很多人认为 google 测试更有吸引力。那么我为什么不应该使用它呢?

标签: c++ qt unit-testing project-structure


【解决方案1】:

对问题 4 的回答:这对于第一个实现来说似乎是正确的,但是这个分支必须死掉,你不希望有一个带有测试的分支。在任何分支上进行的提交必须包含相关的单元测试,并且只有在测试为绿色时才能推送...

问题 1/2 的答案:您的测试应该在一个独立的可执行文件中,不应该发送给您的客户。通常每个可执行目标都有一个 pro 文件。所以我宁愿这样做:

project.pro
|
 --- subproject1.pri
|
 --- subproject2.pri
|
| ...
|
test_project.pro
 --- test_project.pri
    |
     --- main.cpp

用 main.cpp 保持你的线条:

:testing::InitGoogleTest(&argc, argv);
 return RUN_ALL_TESTS();

.. 突然变得很明显,你不觉得吗?

(当然只有 test_project.pro 包含对 Google Test 的包含和引用)

问题 3 的答案:也变得显而易见。

注意:为此,它假设您在 subproject1 和 subproject2 中所做的操作是可访问的,即这些库要么是静态的并包含在 test_project.pro 中,要么是带有导出符号的动态库。

【讨论】:

    猜你喜欢
    • 2016-02-10
    • 2018-11-03
    • 2014-01-30
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    相关资源
    最近更新 更多