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

时间:2014-06-04 15:56:06

标签: c++ qt unit-testing macros 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);
    }
}

1 个答案:

答案 0 :(得分:2)

来自文档:

  

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

     

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

     

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

     

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

     

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

你当然也可以使用an elapsed timer来做这件事。