如何运行QtCreator qtestlib单元测试
-
25-09-2019 - |
题
我开发Qt Creator中的GUI的应用程序和要写入一些单元测试它。
我跟着这指南使一些单元测试QtTestlib和节目编译罚款。 但我怎么跑呢?我想他们的GUI应用程序开始之前,如果调试打造专业化,而不是如果发布版本运行运行。
解决方案 3
最后想出如何启动应用之前运行测试。
我添加在测试中类中的一个静态方法来运行测试:
#include <QtTest/QtTest>
TestClass::runTests()
{
TestClass * test = new TestClass();
QTest::qExec(test);
delete test;
}
在主函数,如下:
int main(int argv, char *args[])
{
::TestsClas::runTests();
QApplication app(argv, args);
MainWindow mainWindow;
mainWindow.setGeometry(100, 100, 800, 500);
mainWindow.show();
return app.exec();
}
测试结果打印在应用输出窗口。
其他提示
不要把测试代码到您的主项目。您应该创建一个单独的项目进行单元测试,然后构建和运行。不要修改您的主项目运行测试。
在理想情况下,你应该有一个构建服务器设置将自动调用你的单元测试项目,建立自己的版本。您可以编写脚本这一点。
从不砍你的主要应用程序运行单元测试。如果你需要做的集成水平测试(即测试程序是如何工作的,一旦它被完全编译和集成),你应该使用不同的集成测试框架,可以让你从外部脚本源测试程序。 FrogLogic的挤流是一个这样的框架。
使用多个目标和预处理标志来实现这一点:
int main(int argv, char *args[])
{
#ifdef TEST
::TestsClas::runTests();
#endif
QApplication app(argv, args);
MainWindow mainWindow;
mainWindow.setGeometry(100, 100, 800, 500);
mainWindow.show();
return app.exec();
}
然后进入项目窗格,通过复制“调试”添加新目标“测试”。下生成步骤,添加一个参数以便使即
CXXFLAGS+=-DTEST
这样的测试包括在测试对象,而不是在调试或释放的目标。
Qt的创建者还没有明确地支持在这个时间(最长为Qt创建者2.0beta)运行单元测试。所以,暂且将需要手动启动测试。
如果您使用的是构建系统CMake的一样,而不是qmake的,那么你可以尝试作为构建过程的一部分自动运行单元测试。不幸的是,我不知道有任何方法与QMAKE做到这一点的。 CMake的是通过Qt的创建者所支持,虽然没有以及qmake的。
不隶属于 StackOverflow