在Qt项目中包含Google测试

4

我想开始使用Google测试来测试我的Qt项目。我阅读了Qt文档,但只有描述如何创建和运行测试,而没有集成的说明。所以我有些问题。

  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 仓库中应该把测试放在哪个位置?我为我的测试创建了一个分支,然后将其合并到主分支。这样做正确吗?

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


2
为什么在Qt已经集成了一个测试框架的情况下还要引入一个单独的测试框架呢? - MrEricSir
2
因为如果我要编写非Qt项目,我只需要将Google测试库集成到其中,然后就会熟悉它。 - Александр Щетнев
1
顺便提一下,QtCreator支持Google测试集成,许多人认为Google测试更具吸引力。那么我为什么不使用它呢? - Александр Щетнев
1个回答

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();

突然之间,显而易见了,你不觉得吗?

回答问题3:也变得明显了。

注:为了使其有效,这需要假设在subproject1和subproject2中所做的内容是可访问的,即这些库要么是静态的并包含在test_project.pro中,要么是具有导出符号的动态库。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接