第一个选项应该将测试结果以 XML 格式输出到标准输出。我刚刚用我自己的库对其进行了测试,它可以工作。虽然它输出了几个连接的 XML 文档,但这可能是因为我使用的是手动执行多个测试的非标准main()
,因此显然为每个测试生成了一个 XML 文档。
第二个可能是错误的:应该是-o results.txt,txt
(没有空格)。和我一样工作,但只写最后一个测试。同样,这可能是因为我手动执行了几个测试,所以每个测试都会覆盖前一个,而我只看到最后一个。如果我想保存所有测试,我需要使用-xml
or指定格式-txt
,然后将其重定向到标准输出:
qztest.exe -xml > results.xml
这可行,但我仍然在一个文件中获得多个连接的文档。
该-csv
选项不起作用,但Qt 文档又说
此模式仅适用于基准测试,因为它会抑制正常的通过/失败消息。
而且我没有基准。
至于为什么这些论点对我有用,这是我的main()
:
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
int err = 0;
{
TestQuaZip testQuaZip;
err = qMax(err, QTest::qExec(&testQuaZip, app.arguments()));
}
{
TestQuaZipFile testQuaZipFile;
err = qMax(err, QTest::qExec(&testQuaZipFile, app.arguments()));
}
// And so on, and so on...
if (err == 0) {
qDebug("All tests executed successfully");
} else {
qWarning("There were errors in some of the tests above.");
}
return err;
}
看,我创建了一个QCoreApplication
- 这可能非常重要,然后我手动将参数传递给QText::qExec
. 由于您已经使用 Qt Creator 创建了项目,您可能希望查看您的main()
. 也许 Qt Creator 没有正确初始化某些东西。请记住,要使参数起作用,测试代码应该能够以某种方式实际访问这些参数!因此,您要么必须显式传递它们,要么至少初始化应用程序,以便代码可以在QCoreApplication::instance()->arguments()
内部执行类似的操作。