我们的团队使用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
执行的最后一个类。
有什么主意,我可以在不接触现有测试类的情况下找到所有测试吗?