搭配Qt使用GTest/GMock时如何自定义公共main替代gtest_main
复用自定义Qt+GTest入口函数的方法
- 将你编写的自定义main函数单独保存为一个独立的源文件,例如命名为
qt_gtest_main.cpp,文件内容如下:
#include <QGuiApplication> #include <gtest/gtest.h> int main(int argc, char **argv) { QGuiApplication guiApplication(argc, argv); ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
- 调整项目构建配置,不再链接GTest自带的
gtest_main库,将上述qt_gtest_main.cpp加入到所有测试项目的编译源码列表中。如果有多个独立的测试可执行文件,可将该文件编译为通用静态库,所有测试目标直接链接该静态库即可。 - 若使用CMake构建,可参考如下配置示例:
# 编译通用入口静态库 add_library(qt_gtest_main STATIC qt_gtest_main.cpp) target_link_libraries(qt_gtest_main PUBLIC Qt::Gui GTest::gtest GTest::gmock) # 单个测试目标配置示例 add_executable(xxx_test xxx_test.cpp) target_link_libraries(xxx_test PRIVATE qt_gtest_main)
采用上述方案后,所有测试用例都会共用同一份main函数实现,无需在每个测试文件中重复编写。
内容的提问来源于stack exchange,提问作者Damir Porobic
相关产品推荐
相关产品推荐

