Qt测试命令行选项

时间:2016-01-12 17:20:07

标签: c++ qt qt-creator qttest

我是Qt的新手,我正在验证Qt测试单元测试框架。我使用的是Qt 5.5。 我能够使用Qt宏创建测试用例并从Qt Creator运行它们,但是从命令提示符运行时遇到问题。具体来说,我无法使用Qt Test提供的日志选项。

这就是我在做的事情:

  1. 使用Qt Creator
  2. 创建了一个Qt测试项目
  3. 使用Qt Creator构建项目
  4. 可执行文件在“project_directory / debug”文件夹中创建
  5. 从调试文件夹
  6. 打开命令提示符
  7. 运行以下命令:
  8.   

    QtTestValidation5.exe -xml
      QtTestValidation5.exe -o results.txt,txt

    1. 执行所有测试但文件夹中没有保存任何内容
    2. 我想将测试结果记录为xml,csv和文本文件格式。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

第一个选项应该以XML格式将测试结果输出到stdout。我刚用我自己的库测试它,它的工作原理。虽然它输出了几个连接的XML文档,但这可能是因为我使用非标准main()手动执行多个测试,因此显然会为每个文档生成一个XML文档。

第二个可能是错误的:它应该是-o results.txt,txt(没有空格)。也像我一样工作,但只写最后一次测试。同样,这可能是因为我手动执行了几项测试,所以每一次都会覆盖前一次,我只看到最后一次。如果我想保存所有测试,我需要使用-xml-txt指定格式,然后将其重定向到stdout:

qztest.exe -xml > results.xml

这样可行,但我仍然在一个文件中获得多个连接文档。

-csv选项不起作用,但再次Qt docs

  

此模式仅适用于基准测试,因为它会抑制正常   通过/未通过消息。

我没有基准。

至于为什么论据对我有用,这是我的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()的操作。