除了 GTest 实现之类的可执行文件之外,在 CTest 中的 QTest 上注册测试
Registering tests on QTest in CTest apart from executable like GTest realizations
我有一个包含多个测试的可执行文件,用 QTest.
编写
正在使用 add_tests(NAME test_name COMMAND test_executable)
注册可执行文件。显然,CTest中的测试将作为一个处理,因此如果数百个中的一个失败,将很难找到问题所在。当添加带有测试的新可执行文件时,情况会更糟。
是否可以像 GTest 实现一样单独注册测试?对于 QTest 测试,是否有 GTEST_ADD_TESTS or GTEST_DISCOVER_TESTS CMake 函数的替代方案?
使用 ADD_CUSTOM_TARGET to run 你的测试。
add_custom_target(run_test qtest_executable_target)
cmake <dir>
cmake --build <dir> -t run_test
仅使用 QTest 我没有找到解决方案,但尝试了另一种有效的方法。
我将测试框架更改为 GTest。但是,测试应用程序仍然与 QTest 库链接,以访问模拟 GUI 交互等功能。
gtest_main 模块中的默认 main 函数可能不兼容,因为它需要初始化 QApplication 用于 Qt 的许多功能。在 gtest_main.cc 源文件中有一个基于 GTest 的 main 的实现。
#include <cstdio>
#include <gtest/gtest.h>
#include <QApplication>
int main(int argc, char ** argv)
{
QApplication app(argc, argv);
printf("Running main() from %s\n", __FILE__);
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
经过测试,使用GTEST_ADD_TESTS or GTEST_DISCOVER_TESTS CMake函数也没有发现任何问题。
我有一个包含多个测试的可执行文件,用 QTest.
编写
正在使用 add_tests(NAME test_name COMMAND test_executable)
注册可执行文件。显然,CTest中的测试将作为一个处理,因此如果数百个中的一个失败,将很难找到问题所在。当添加带有测试的新可执行文件时,情况会更糟。
是否可以像 GTest 实现一样单独注册测试?对于 QTest 测试,是否有 GTEST_ADD_TESTS or GTEST_DISCOVER_TESTS CMake 函数的替代方案?
使用 ADD_CUSTOM_TARGET to run 你的测试。
add_custom_target(run_test qtest_executable_target)
cmake <dir>
cmake --build <dir> -t run_test
仅使用 QTest 我没有找到解决方案,但尝试了另一种有效的方法。
我将测试框架更改为 GTest。但是,测试应用程序仍然与 QTest 库链接,以访问模拟 GUI 交互等功能。
gtest_main 模块中的默认 main 函数可能不兼容,因为它需要初始化 QApplication 用于 Qt 的许多功能。在 gtest_main.cc 源文件中有一个基于 GTest 的 main 的实现。
#include <cstdio>
#include <gtest/gtest.h>
#include <QApplication>
int main(int argc, char ** argv)
{
QApplication app(argc, argv);
printf("Running main() from %s\n", __FILE__);
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
经过测试,使用GTEST_ADD_TESTS or GTEST_DISCOVER_TESTS CMake函数也没有发现任何问题。