我使用QTestLib库和QTest来运行我的单元测试。我在windows7上工作,使用的是带有MVSC 2010编译器的Qt 4.8。当我使用以下命令运行测试时:
QTest::qExec(TestDateDD/whateverTestClass);我在控制台中获得输出:
********* 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?
发布于 2012-05-29 08:20:02
没有办法改变记录器的功能。QAbstractTestLogger被硬编码为输出到文件或标准输出,并且您不能向QTestLog提供您自己的实现。
可以将标准输出重定向到文本框中,也可以在调用QTest::qExec并在写出文件时将-o filename指定为参数。
但是,我建议您将测试编译为单独的可执行文件,并使用QProcess运行它们。它继承了QIODevice,把它的数据发送到你的窗口应该不难。
使用QProcess的其他几个好处是,单元测试中的崩溃或断言不会导致图形用户界面崩溃,而且您可以同时运行多个测试,而不会弄乱输出。
https://stackoverflow.com/questions/10772024
复制相似问题