我正在使用Qt 5.3.2的QTest来对类执行一些单元测试。我正在使用VS2013 Express来构建测试仪。 VS项目文件是使用qmake从.pro文件生成的。为了运行测试,我将QTEST_MAIN添加到我的源文件中。
项目构建和测试可执行工作正常。但是我在查看结果时遇到了问题(例如PASS输出)。在测试运行时,控制台窗口打开,接收所有测试输出。如果测试完成,控制台窗口立即关闭,我实际上无法看到它显示的内容。特别是我看不出有些测试失败了。
我认为QTest使用stdout作为默认输出通道。所以我尝试了VS调试器选项"重定向标准输出到输出窗口"但它没有效果。
那怎么能起作用?
测试输出是否应该实际转到新打开的控制台窗口?那为什么它不开放?或者整个测试输出是否应该转到VS调试器输出面板?有没有办法重定向输出?
答案 0 :(得分:3)
您的Visual Studio Add-in
版本是否安装了Visual Studio
?如果不是,您应该从qt-project.org/downloads下载。
我做了一个简单的qt test并在*.pro
内导入了Visual Studio
文件并运行了测试;对我来说一切正常,窗口保持打开状态,显示测试的简历:
我建议编写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"