首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从QTestLib/QTest获取测试失败信息

如何从QTestLib/QTest获取测试失败信息
EN

Stack Overflow用户
提问于 2012-05-27 14:07:49
回答 1查看 2.1K关注 0票数 3

我使用QTestLib库和QTest来运行我的单元测试。我在windows7上工作,使用的是带有MVSC 2010编译器的Qt 4.8。当我使用以下命令运行测试时:

代码语言:javascript
复制
QTest::qExec(TestDateDD/whateverTestClass);

我在控制台中获得输出:

代码语言:javascript
复制
********* Start testing of TestDateDD *********
    Config: Using QTest library 4.8.0, Qt 4.8.0
    PASS   : TestDateDD::initTestCase()
    PASS   : TestDateDD::testValidity()
    FAIL!  : TestDateDD::testMonth(2012/7/10) Compared values are not the same
    Actual (date.longMonthName(date.month())): July
    Expected (monthname): June
    ..\UnitTestingPlugiin\TestDateDD.cpp(38) : failure location
    PASS   : TestDateDD::cleanupTestCase()
    Totals: 3 passed, 1 failed, 0 skipped
    ********* Finished testing of TestDateDD *********

但是,我的要求是在我的GUI中为每个测试槽显示此消息。我做了一些研究,发现qtestlog.cpp使用自己的messageHandler来管理测试输出,并将结果显示为通过或失败,以及失败消息、行号等。有没有什么方法可以为我的图形用户界面应用程序处理这个messageHandler of QTest?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-29 08:20:02

没有办法改变记录器的功能。QAbstractTestLogger被硬编码为输出到文件或标准输出,并且您不能向QTestLog提供您自己的实现。

可以将标准输出重定向到文本框中,也可以在调用QTest::qExec并在写出文件时将-o filename指定为参数。

但是,我建议您将测试编译为单独的可执行文件,并使用QProcess运行它们。它继承了QIODevice,把它的数据发送到你的窗口应该不难。

使用QProcess的其他几个好处是,单元测试中的崩溃或断言不会导致图形用户界面崩溃,而且您可以同时运行多个测试,而不会弄乱输出。

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

https://stackoverflow.com/questions/10772024

复制
相关文章

相似问题

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