如何查看QTest结果
我正在使用Qt5.3.2的QTest对一个类执行一些单元测试。我正在使用VS2013 Express构建测试仪。VS项目文件是使用qmake从.pro文件生成的。为了运行测试,我将QTEST_MAIN添加到源文件中 项目构建和测试人员可执行的工作都很好。但是,我在查看结果时遇到问题(例如,通过输出)。测试运行时,控制台窗口打开,接收所有测试输出。如果测试完成,控制台窗口立即关闭,我实际上看不到它显示了什么。特别是我看不出是否有一些测试失败 我想QTest使用stdout作为默认输出通道。所以我尝试了VS调试器选项“将标准输出重定向到输出窗口”,但没有效果 那么这是怎么回事如何查看QTest结果,qt,visual-studio-2013,qtestlib,qt5.3,Qt,Visual Studio 2013,Qtestlib,Qt5.3,我正在使用Qt5.3.2的QTest对一个类执行一些单元测试。我正在使用VS2013 Express构建测试仪。VS项目文件是使用qmake从.pro文件生成的。为了运行测试,我将QTEST_MAIN添加到源文件中 项目构建和测试人员可执行的工作都很好。但是,我在查看结果时遇到问题(例如,通过输出)。测试运行时,控制台窗口打开,接收所有测试输出。如果测试完成,控制台窗口立即关闭,我实际上看不到它显示了什么。特别是我看不出是否有一些测试失败 我想QTest使用stdout作为默认输出通道。所以我尝
测试输出是否应该实际转到新打开的控制台窗口?那它为什么不开着呢?或者整个测试输出都应该进入VS调试器输出面板?是否有重定向输出的方法?是否为您的
Visual Studio
版本安装了Visual Studio加载项?如果没有,你应该从下载
我做了一个简单的测试,将*.pro
文件导入visualstudio
并运行了测试;对我来说,一切正常,窗口保持打开状态,显示测试的恢复:
我建议编写,使用Visual Studio加载项在Visual Studio中导入,并比较项目设置。可能需要在某个地方更改一个标志,以使窗口保持打开状态
您还可能需要控制台(/SUBSYSTEM:Console)
链接器选项集。右键单击项目,转到项目属性
,选择配置属性>链接器>系统
。对于右侧窗格中的子系统
属性,单击右侧列中的下拉框。现在选择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"
#包括
#包括
类TestQString:公共QObject
{
Q_对象
专用插槽:
void toUpper();
公众:
~TestQString()
{
getch();
}
};
void TestQString::toUpper()
{
QString str=“你好”;
QCOMPARE(str.toUpper(),QString(“HELLO”);
}
QTEST_MAIN(测试管柱)
#包括“testqstring.moc”
(1) -不,我在那里看不到结果。但“导出”是什么意思?@Silicomancer By export我指的是你所说的重定向(我尝试了VS调试器选项“将标准输出重定向到输出窗口”)。但请看我的编辑。目前我正在使用VS 2013的快速版本。这意味着我无法安装插件:-(我检查了控制台选项。它已经按照您的建议进行了配置。Anway在使用Strg+F5运行时,窗口保持打开状态。这很奇怪。似乎我需要编写自己的主要功能,包括等待呼叫:-(使用Strg+F5运行时,窗口保持打开状态
-这不是您想要的吗?为什么您需要编写自己的函数?为什么不直接从控制台(命令行)运行测试(应用程序)?别管VisualStudio。因为在使用VS IDE时,调试测试代码和改进测试要容易得多。我的意思是IDE就是为了这个。我想一定有一个简单的解决方案。