我有一个包含多个测试的可执行文件,使用QTest编写.
正在使用add_tests(NAME test_name COMMAND test_executable)
注册可执行文件。显然,测试将作为CTest中的一个来处理。因此,如果数百个系统中有一个出现故障,就很难找到问题所在。当添加带有测试的新可执行文件时,情况会更糟。
是否可以像GTest实现那样单独注册测试?是否有替代GTEST_ADD_TESTS或GTEST_DISCOVER_TESTS的CMake函数用于QTest测试?
使用ADD_CUSTOM_TARGET来运行您的测试。
add_custom_target(run_test qtest_executable_target)
cmake <dir>
cmake --build <dir> -t run_test
使用QTest我没有找到解决方案,但尝试了另一种有效的方法。
我将测试框架更改为GTest。但是,测试应用程序仍然链接到QTest
来自gtest_main模块的默认main函数可能不兼容,因为它需要为Qt的许多特性初始化QApplication。在gtest_main。Cc源文件。
#include <cstdio>
#include <gtest/gtest.h>
#include <QApplication>
int main(int argc, char ** argv)
{
QApplication app(argc, argv);
printf("Running main() from %sn", __FILE__);
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
测试后,我没有发现任何问题,以及使用GTEST_ADD_TESTS或GTEST_DISCOVER_TESTS CMake函数。