Я написал небольшой тест в QTest, и хотя я использовал QBENCHMARK_ONCE.QTest выполняет тестовый пример дважды
Вот несколько примеров кода тиражирование вопрос:
Заголовок:
#ifndef MY_TEST_H
#define MY_TEST_H
#include <QtTest>
class MyTest : public QObject
{
Q_OBJECT
private slots:
void initTestCase();
void test1();
};
#endif // MY_TEST_H
CPP файл:
#include "mytest.h"
void MyTest::initTestCase() {
qDebug() << "init";
}
void MyTest::test1() {
QBENCHMARK_ONCE {
qDebug() << "bench";
}
qDebug() << "test1";
}
QTEST_MAIN(MyTest)
Запуск "MyTest" я получаю:
********* Start testing of MyTest *********
Config: Using QtTest library 5.5.1, Qt 5.5.1 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 5.3.1 20160407)
QDEBUG : MyTest::initTestCase() init
PASS : MyTest::initTestCase()
QDEBUG : MyTest::test1() bench
QDEBUG : MyTest::test1() test1
QDEBUG : MyTest::test1() bench
QDEBUG : MyTest::test1() test1
PASS : MyTest::test1()
RESULT : MyTest::test1():
0 msecs per iteration (total: 0, iterations: 1)
PASS : MyTest::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of MyTest *********
I хотел бы, чтобы он работал ce и только один раз. Некоторые из тестов занимают одну минуту на итерацию ...
Я использую CMake с make back-end на Linux. Они тестируют классы, скомпилированные в отдельные исполняемые файлы. Поскольку CTest не дает мне полезный выход, я запускать их непосредственно, то есть, "# ./mytest"
// Дополнение: CMakeLists.txt
include(CTest)
enable_testing()
set(CMAKE_AUTOMOC ON)
find_package(Qt5Test REQUIRED)
add_executable(mytest "test/mytest.cpp")
add_test(mytest mytest)
target_link_libraries(mytest Qt5::Test)
Не могли бы вы попытаться создать небольшой воспроизводимый пример, пожалуйста? Например, какое значение присвоено NUMBER_ITERATIONS, в вашем примере не отображается. – KimKulling
Я попытаюсь создать его. NUMBER_ITERATIONS действительно не имеет значения, это всего лишь параметр для функции вычисления и определяет, как часто запускается внутренний цикл (итеративный алгоритм). Это 10 000 битв. ;) –