Qt 单元测试在 Qt Creator 的 Qt 4.8 应用程序输出窗格中重复所有内容两次(但在 Qt 5.2.2 中没有)

Qt Unit Test repeats everything twice in Qt Creator's Application Output pane for Qt 4.8 (but not in Qt 5.2.2)

我刚刚注意到,即使在 全新项目 上,Qt 单元测试也会在“应用程序输出”窗格中以不同的颜色将所有内容写入两次 - 首先是洋红色,然后是黑色。我认为这是因为它同时写入 stdout 和 stderr。

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

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

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

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

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

在 Qt Bug Tracker 网站上搜索后,我发现它确实是一个错误。我找到了 bug report mentioning it:

Description If one turns off the "run on terminal" option on Windows, qDebug's output will be printed twice in the application output pane. This is due to qDebug using OutputDebugString and stderr to output it's messages. To solve this we could do one of these items: Display the OutputDebugString stream and stderr in different panes if "run on terminal" is off. Provide a checkbox to hide the OutputDebugString stream in the application output pane. Prevent QDebug from using OutputDebugString and stderr. Maybe using an environment variable that is set by Qt Creator.

我认为这是因为 QTestLib 使用了 CONFIG += console ,同时关闭了 "Run in terminal" 复选框,从而触发了这个错误。