1
私はQTestで小さなベンチマークを書いていますが、私はQBENCHMARK_ONCEを使っています。ここでQTestは2回のテストケースを実行します
問題を複製するいくつかのサンプルコード:
ヘッダー:
#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ファイル:
********* 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を:
#include "mytest.h"
void MyTest::initTestCase() {
qDebug() << "init";
}
void MyTest::test1() {
QBENCHMARK_ONCE {
qDebug() << "bench";
}
qDebug() << "test1";
}
QTEST_MAIN(MyTest)
は "MyTestには、" 私が取得実行それを実行したい一度だけ。いくつかのベンチマークでは、1回の実行で1分かかる。
Linuxでmake CMakeを使用している。テストクラスは別々の実行可能ファイルにコンパイルされます。 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 btwです。 ;) –