首页 > 解决方案 > 让 Qt Creator 测试扫描仪找到一个项目中的所有测试类

问题描述

我们的团队使用 Qt Creator。我们有相当大的项目,对于每个项目,我们都有一个测试项目,每个生产类都有一个测试类。测试项目的主体调用QTest::qExec每个测试类。我们通过简单地运行测试项目来运行我们的测试。

这很好,但输出仅限于控制台,如下所示:

********* Start testing of TestClass1 *********
Config: Using QtTest library 5.10.1, Qt 5.10.1 (x86_64-little_endian-lp64 shared (dynamic) debug build; by GCC 7.3.0)
PASS   : TestClass1::initTestCase()
PASS   : TestClass1::test1()
PASS   : TestClass1::test2()
PASS   : TestClass1::cleanupTestCase()
Totals: 2 passed, 0 failed, 0 skipped, 0 blacklisted, 3ms
********* Finished testing of TestClass1*********
********* Start testing of TestClass2 *********
Config: Using QtTest library 5.10.1, Qt 5.10.1 (x86_64-little_endian-lp64 shared (dynamic) debug build; by GCC 7.3.0)
PASS   : TestClass2::initTestCase()
PASS   : TestClass2::test1()
PASS   : TestClass2::test2()
PASS   : TestClass2::cleanupTestCase()
Totals: 2 passed, 0 failed, 0 skipped, 0 blacklisted, 3ms
********* Finished testing of TestClass2*********

我刚刚发现了集成测试 gui,并且真的很想使用它。但是,我无法让扫描仪(工具-> 测试-> 重新扫描测试)找到项目中的所有测试。如果我主要写这个,它适用于TestClass1:

int main(int argc, char** argv) {
    TestClass1 test;
    return QTest::qExec(&test, argc, argv);
}

但是,如果我尝试如下添加 TestClass2,则扫描仪只能识别 TestClass2:

int main(int argc, char** argv) {
    TestClass1 test1;
    int ret = QTest::qExec(&test1, argc, argv);
    TestClass2 test2;
    int ret &= QTest::qExec(&test2, argc, argv);
    return ret;
}

好像扫描仪只找到最后一个用QTest::qExec.

知道如何在不触及现有测试类的情况下找到所有测试吗?

标签: qtunit-testingqt-creator

解决方案


推荐阅读