在 Qt 项目中包括 google 个测试

Including google tests in Qt project

我正在尝试使用 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 存储库中的什么地方进行测试?我为我的测试创建了分支,然后将它合并到 master。对吗?

感谢您的回答,抱歉我的英语不好。

问题 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 测试)

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

注意:为了让它起作用,它假设您在 subproject1 和 subproject2 中所做的事情是可访问的,即这些库是静态的并包含在 test_project.pro 中,或者是带有导出符号的动态库。