如何查看QTest结果

时间:2014-10-12 13:56:20

标签: qt visual-studio-2013 qtestlib qt5.3

我正在使用Qt 5.3.2的QTest来对类执行一些单元测试。我正在使用VS2013 Express来构建测试仪。 VS项目文件是使用qmake从.pro文件生成的。为了运行测试,我将QTEST_MAIN添加到我的源文件中。

项目构建和测试可执行工作正常。但是我在查看结果时遇到了问题(例如PASS输出)。在测试运行时,控制台窗口打开,接收所有测试输出。如果测试完成,控制台窗口立即关闭,我实际上无法看到它显示的内容。特别是我看不出有些测试失败了。

我认为QTest使用stdout作为默认输出通道。所以我尝试了VS调试器选项"重定向标准输出到输出窗口"但它没有效果。

那怎么能起作用?

测试输出是否应该实际转到新打开的控制台窗口?那为什么它不开放?或者整个测试输出是否应该转到VS调试器输出面板?有没有办法重定向输出?

1 个答案:

答案 0 :(得分:3)

您的Visual Studio Add-in版本是否安装了Visual Studio?如果不是,您应该从qt-project.org/downloads下载。

我做了一个简单的qt test并在*.pro内导入了Visual Studio文件并运行了测试;对我来说一切正常,窗口保持打开状态,显示测试的简历:

enter image description here

我建议编写example,使用Visual Studio Add-in在Visual Studio中导入它并比较项目设置。机会是需要在某处更改的标志,以便窗口保持打开状态。

也可能需要设置Console (/SUBSYSTEM:CONSOLE)个链接器选项。右键单击项目,转到项目Properties,选择Configuration Properties>Linker>System。对于右侧窗格中的Subsystem属性,请单击右侧列中的下拉框。现在选择Console (/SUBSYSTEM:CONSOLE)并重新测试( Ctrl + F5 而不只是 F5 )(1)。

如果您在Debug模式下运行测试(即按 F5 ),您的窗口将无法保持打开状态。如果你希望它保持打开状态,你需要在你的测试析构函数中添加一个getch()调用,当你的测试结束时,窗口会一直等待输入(例如Enter):

我的测试代码是:

#include <QtTest/QtTest>
#include <conio.h>

class TestQString: public QObject
{
    Q_OBJECT
private slots:
    void toUpper();

public:
    ~TestQString()
    {
        getch();
    }
};

void TestQString::toUpper()
{
    QString str = "Hello";
    QCOMPARE(str.toUpper(), QString("HELLO"));
}

QTEST_MAIN(TestQString)
#include "testqstring.moc"

(1) - How to keep the console window open in Visual C++?