如何使用QTest QBENCHMARK宏作为单元测试中的参数

iQt*_*iQt 6 c++ macros qt unit-testing qtestlib

我正在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);
    }
}
Run Code Online (Sandbox Code Playgroud)

lpa*_*app 2

从文档中:

void QTest::setBenchmarkResult(qreal 结果,QBenchmarkMetric 指标)

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

如果您想在不使用 QBENCHMARK 宏的情况下报告基准测试结果,请使用此函数。使用指标指定 Qt Test 应如何解释结果。

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

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

当然,您也可以只使用经过的计时器来完成这样的事情。