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

How to use QTest QBENCHMARK macros result as a parameter in a unit test

本文关键字:QBENCHMARK 结果 参数 QTest 单元测试      更新时间:2023-10-16

我正在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);
    }
}

来自文档:

void QTest::setBenchmarkResult(qreal result, QBenchmarkMetric metric)

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

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

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

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

当然,您也可以直接使用计时器。