C++ 如何在单元测试中将QTest QBENCHMARK宏结果用作参数

C++ 如何在单元测试中将QTest QBENCHMARK宏结果用作参数,c++,qt,unit-testing,macros,qtestlib,C++,Qt,Unit Testing,Macros,Qtestlib,我正在用Qt中的QTest编写一些单元测试。我还遇到了QBENCHMARK宏,它对它封装的代码进行基准测试 我正在运行我的单元测试,并对一些代码进行基准测试。QBENCHMARK报告了执行某个方法所需的时间,这很好。我想在单元测试中使用执行时间,例如QVERIFY2()。我该怎么做 编辑: 我目前正在做的是: void UnitTest::benchmark() { QString str1 = QLatin1String("This is a test string"); QS

我正在用Qt中的QTest编写一些单元测试。我还遇到了QBENCHMARK宏,它对它封装的代码进行基准测试

我正在运行我的单元测试,并对一些代码进行基准测试。QBENCHMARK报告了执行某个方法所需的时间,这很好。我想在单元测试中使用执行时间,例如QVERIFY2()。我该怎么做

编辑:

我目前正在做的是:

void UnitTest::benchmark()
{
    QString str1 = QLatin1String("This is a test string");
    QString str2 = QLatin1String("This is a test string");

    QCOMPARE(str1.localeAwareCompare(str2), 0);

    QBENCHMARK {
        str1.localeAwareCompare(str2);
    }
}

从文件中:

将此测试函数的基准测试结果设置为结果

如果要报告基准测试结果而不使用QBENCHMARK宏,请使用此函数。使用metric指定Qt测试应如何解释结果

结果的上下文将是测试函数名和来自_data函数的任何数据标记。此函数在每个测试函数中只能调用一次,后续调用将替换先前报告的结果

请注意,-iterations命令行参数对没有QBENCHMARK宏的测试函数没有影响


当然,您也可以将其用于这样的事情。

您的意思是要将执行时间与值进行比较,还是要寻找一个值?我试试看。它似乎做了我想做的事情,还有更多:)我想将执行时间与一个值=)进行比较。作为答案末尾提到的最简单的解决方案,QelasedTimer到底有什么错?@FinalContest:它确实有效,但它不像QBENCHMARK那样自动平均。这是一个很好的解决方案,但可能不是最好的。我用当前运行的代码更新了这个问题。我不太明白如何让它与setBenchmarkResult类似?它说它的上下文是测试函数,最终是测试函数的数据,但我尝试了WallTimeNano,它只有0.00000000。宏对许多测量的运行时间求平均值,不确定这一次是否如此?我正在尝试编写与我在问题中所用的功能相同的代码。@Phataas:您还没有回复我最初的评论。现在还不清楚你想要实现什么。