C++-doctest-テストフレームワーク
9005 ワード
C++-doctest-テストフレームワーク
C++
UnitTest
Doctest
テストフレームワーク
doctestは最も簡単で使いやすいユニットテストフレームワークであり、ヘッダファイルを参照するだけでよい.
main関数のないテストサンプル
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include "doctest.h"
int factorial(int number) { return number <= 1 ? number : factorial(number - 1) * number; }
TEST_CASE("testing the factorial function") {
CHECK(factorial(1) == 1);
CHECK(factorial(2) == 2);
CHECK(factorial(3) == 6);
CHECK(factorial(10) == 3628800);
}
main関数のあるテストサンプル
関数contextのrunが実行されると、すべてのTEST_がCASEのマクロ関数展開実行は、自分の都合でテストを手配できます#define DOCTEST_CONFIG_IMPLEMENT
#include "doctest.h"
int main(int argc, char **argv) {
doctest::Context context;
context.applyCommandLine(argc, argv);
int res = context.run(); // run doctest
// important - query flags (and --exit) rely on the user doing this
if (context.shouldExit())
{
// propagate the result of the tests
return res;
}
printf("%s
", "Hello, World!");
system("pause");
return 0;
}
int factorial(const int number) {
return number < 1 ? 1 : number <= 1 ? number : factorial(number - 1) * number;
}
TEST_CASE("testing the factorial function") {
CHECK(factorial(0) == 1);
CHECK(factorial(1) == 1);
CHECK(factorial(2) == 2);
CHECK(factorial(3) == 6);
CHECK(factorial(10) == 3628800);
}
その他
自分で简単に使う机能は使うことができて、自分でvczhの书く1つの简単なテストのフレームワークの実现を见て、原理を理解して、それからこのC++ライブラリを発见して、本当にとても使いやすくて、今自分の必要とする机能は十分で、后で更に机能を过ぎて自分でdoctest文档をかじります
しかしGoogleTestが提供する機能はもっと多く、その後は過去を切り替える可能性があると感じています.
リファレンスリンク
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include "doctest.h"
int factorial(int number) { return number <= 1 ? number : factorial(number - 1) * number; }
TEST_CASE("testing the factorial function") {
CHECK(factorial(1) == 1);
CHECK(factorial(2) == 2);
CHECK(factorial(3) == 6);
CHECK(factorial(10) == 3628800);
}
#define DOCTEST_CONFIG_IMPLEMENT
#include "doctest.h"
int main(int argc, char **argv) {
doctest::Context context;
context.applyCommandLine(argc, argv);
int res = context.run(); // run doctest
// important - query flags (and --exit) rely on the user doing this
if (context.shouldExit())
{
// propagate the result of the tests
return res;
}
printf("%s
", "Hello, World!");
system("pause");
return 0;
}
int factorial(const int number) {
return number < 1 ? 1 : number <= 1 ? number : factorial(number - 1) * number;
}
TEST_CASE("testing the factorial function") {
CHECK(factorial(0) == 1);
CHECK(factorial(1) == 1);
CHECK(factorial(2) == 2);
CHECK(factorial(3) == 6);
CHECK(factorial(10) == 3628800);
}