让Qt Creator测试扫描仪在一个项目中找到所有测试类

时间:2018-07-05 14:03:16

标签: qt unit-testing 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执行的最后一个类。

有什么主意,我可以在不接触现有测试类的情况下找到所有测试吗?

0 个答案:

没有答案