Qt 测试命令行选项
Qt Test command line options
我是 Qt 的新手,我正在验证 Qt Test 单元测试框架。我正在使用 Qt 5.5。
我可以使用 Qt 宏和 运行 从 Qt Creator 创建测试用例,但是当从命令提示符 运行ning 时我遇到了问题。具体来说,我无法使用 Qt Test 提供的日志记录选项。
这是我正在做的事情:
- 使用 Qt Creator 创建了一个 Qt 测试项目
- 使用 Qt Creator 构建项目
- 可执行文件在“project_directory/debug”文件夹中创建
- 从调试文件夹打开命令提示符
- 运行 以下命令:
QtTestValidation5.exe –xml
QtTestValidation5.exe -o results.txt, txt
- 已执行所有测试,但文件夹中未保存任何内容
我想将测试结果记录为 xml、csv 和文本文件格式。有人可以帮忙吗?
第一个选项应该将测试结果以XML格式输出到stdout。我刚刚用我自己的图书馆测试过它并且它有效。虽然它输出了几个串联的 XML 文档,但这可能是因为我正在使用 non-standard main()
手动执行多个测试,所以显然为每个生成一个 XML 文档其中
第二个可能是错误的:应该是-o results.txt,txt
(不是space)。和我一样工作,但只写最后一个测试。同样,这可能是因为我手动执行了多个测试,所以每个测试都会覆盖前一个,而我只看到最后一个。如果我想保存所有测试,我需要使用 -xml
或 -txt
指定格式,然后将其重定向到标准输出:
qztest.exe -xml > results.xml
这有效,但我仍然在一个文件中获得多个串联文档。
-csv
选项不起作用,但又 Qt docs 说
This mode is only suitable for benchmarks, since it suppresses normal
pass/fail messages.
而且我没有基准。
至于为什么这些论点对我有用,这是我的 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()
的操作。
我是 Qt 的新手,我正在验证 Qt Test 单元测试框架。我正在使用 Qt 5.5。 我可以使用 Qt 宏和 运行 从 Qt Creator 创建测试用例,但是当从命令提示符 运行ning 时我遇到了问题。具体来说,我无法使用 Qt Test 提供的日志记录选项。
这是我正在做的事情:
- 使用 Qt Creator 创建了一个 Qt 测试项目
- 使用 Qt Creator 构建项目
- 可执行文件在“project_directory/debug”文件夹中创建
- 从调试文件夹打开命令提示符
- 运行 以下命令:
QtTestValidation5.exe –xml
QtTestValidation5.exe -o results.txt, txt
- 已执行所有测试,但文件夹中未保存任何内容
我想将测试结果记录为 xml、csv 和文本文件格式。有人可以帮忙吗?
第一个选项应该将测试结果以XML格式输出到stdout。我刚刚用我自己的图书馆测试过它并且它有效。虽然它输出了几个串联的 XML 文档,但这可能是因为我正在使用 non-standard main()
手动执行多个测试,所以显然为每个生成一个 XML 文档其中
第二个可能是错误的:应该是-o results.txt,txt
(不是space)。和我一样工作,但只写最后一个测试。同样,这可能是因为我手动执行了多个测试,所以每个测试都会覆盖前一个,而我只看到最后一个。如果我想保存所有测试,我需要使用 -xml
或 -txt
指定格式,然后将其重定向到标准输出:
qztest.exe -xml > results.xml
这有效,但我仍然在一个文件中获得多个串联文档。
-csv
选项不起作用,但又 Qt docs 说
This mode is only suitable for benchmarks, since it suppresses normal pass/fail messages.
而且我没有基准。
至于为什么这些论点对我有用,这是我的 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()
的操作。