首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从QtCreator运行qtestlib单元测试

如何从QtCreator运行qtestlib单元测试
EN

Stack Overflow用户
提问于 2010-05-11 16:18:07
回答 4查看 8.4K关注 0票数 5

我正在用Qt Creator开发一个GUI应用程序,并想为它写一些单元测试。

我跟随This guide用QtTestlib进行了一些单元测试,程序编译得很好。但是我该如何运行它们呢?我希望它们在GUI应用程序开始之前运行,如果是debug buid,而不是运行,如果是发布版本。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-31 20:20:05

在启动应用程序之前,我终于弄清楚了如何运行测试。

我在测试类中添加了一个静态方法来运行测试:

代码语言:javascript
复制
#include <QtTest/QtTest>

TestClass::runTests()
{
    TestClass * test = new TestClass();

    QTest::qExec(test);
    delete test;
}

在main函数中,执行以下操作:

代码语言:javascript
复制
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();
}

测试结果打印在应用程序输出窗口中。

票数 3
EN

Stack Overflow用户

发布于 2010-10-09 05:33:21

不要将测试代码放入主项目中。您应该为您的单元测试创建一个单独的项目,然后构建并运行该项目。不要修改主项目来运行测试。

理想情况下,您应该设置一个构建服务器,它将自动调用您的单元测试项目并构建您的版本。您可以编写此脚本。

永远不要为了运行单元测试而破解你的主应用程序。如果您需要进行集成级测试(即,测试程序在完全编译和集成后如何工作),您应该使用不同的集成测试框架,该框架允许您从外部脚本源测试程序。FrogLogic's Squish就是这样一个框架。

票数 18
EN

Stack Overflow用户

发布于 2011-05-27 19:41:07

使用多个目标和预处理器标志来实现这一点:

代码语言:javascript
复制
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();
}

然后进入项目窗格,通过复制"Debug“来添加一个新的目标"Test”。在Build Steps下,添加一个参数,使其成为

代码语言:javascript
复制
CXXFLAGS+=-DTEST

这样,测试就会包含在test目标中,而不是Debug或Release目标中。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2809028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档