除了 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 源文件中有一个基于 GTestmain 的实现。

#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函数也没有发现任何问题。