2

我刚刚注意到,即使在一个全新的项目中,Qt Unit Test 也会在“应用程序输出”窗格中以不同的颜色两次写入所有内容——首先是洋红色,然后是黑色。我认为这是因为它同时写入标准输出和标准错误。

这发生在 Qt 4.8 但不在 Qt 5.2.2 上。在 Qt 5.2.2 中,只打印黑色文本,这是应该的。

例如,对于仅包含此测试的单元测试项目:

void Untitled15Test::testCase1()
{
    QVERIFY2(false, "Failure");
}

输出是这样的(我使用屏幕截图显示颜色):

在此处输入图像描述

有没有办法关闭这种行为?这是Qt4中的错误吗?

4

1 回答 1

1

在 Qt Bug Tracker 网站上进行一些搜索后,我发现它确实是一个错误。我发现提到它的错误报告

说明 如果关闭 Windows 上的“在终端上运行”选项,qDebug 的输出将在应用程序输出窗格中打印两次。这是由于 qDebug 使用 OutputDebugString 和 stderr 来输出它的消息。为了解决这个问题,我们可以执行以下操作之一: 如果“在终端上运行”关闭,则在不同的窗格中显示 OutputDebugString 流和 stderr。提供一个复选框以在应用程序输出窗格中隐藏 OutputDebugString 流。防止 QDebug 使用 OutputDebugString 和 stderr。也许使用由 Qt Creator 设置的环境变量。

我认为这是因为 QTestLib 使用CONFIG += console , 同时关闭了“在终端中运行”复选框,从而触发了这个错误。

于 2015-03-18T15:18:06.767 回答