Как использовать результат макросов QTest QBENCHMARK в качестве параметра в модульном тесте

Я пишу некоторые модульные тесты, используя QTest в Qt. Я также столкнулся с макросом 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);
}
}

6

Решение

Из документации:

void QTest :: setBenchmarkResult (реальный результат, метрика QBenchmarkMetric)

Устанавливает результат теста для этой функции теста.

Используйте эту функцию, если вы хотите сообщить о результатах теста без использования макроса QBENCHMARK. Используйте метрику, чтобы указать, как Qt Test должен интерпретировать результаты.

Контекстом для результата будет имя тестовой функции и любой тег данных из функции _data. Эта функция может вызываться только один раз в каждой тестовой функции, последующие вызовы заменят ранее сообщенные результаты.

Обратите внимание, что аргумент командной строки -iterations не влияет на тестовые функции без макроса QBENCHMARK.

Вы также можете просто использовать истекший таймер за такую ​​вещь.

2

Другие решения


По вопросам рекламы [email protected]