我刚注意到即使在新项目上,Qt单元测试也会在“应用程序输出”窗格中以不同的颜色写入两次 - 首先是洋红色,然后是黑色。我认为这是因为它写入了stdout和stderr。
这在Qt 4.8上发生了,但在Qt 5.2.2上没有发生。在Qt 5.2.2中,只打印黑色文本。
例如,对于仅包含此测试的单元测试项目:
void Untitled15Test::testCase1()
{
QVERIFY2(false, "Failure");
}
输出是这个(我使用截图,所以颜色显示):
有没有办法可以关闭此行为?这是Qt4中的错误吗?
答案 0 :(得分:1)
在对Qt Bug Tracker网站进行一些搜索之后,我发现它确实是一个错误。我找到了bug report mentioning it:
说明如果关闭Windows上的“在终端上运行”选项, qDebug的输出将在应用程序输出窗格中打印两次。 这是由于qDebug使用OutputDebugString和stderr输出 这是消息。要解决这个问题,我们可以执行以下任一项:显示 如果“运行”,则输出不同窗格中的OutputDebugString流和stderr 终端“已关闭。提供一个复选框以隐藏OutputDebugString 应用程序输出窗格中的流。防止QDebug使用 OutputDebugString和stderr。也许使用环境变量 由Qt Creator设定。
我认为这是因为QTestLib使用CONFIG += console
,同时关闭“Run in terminal”复选框,从而触发此错误。