我开发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的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top