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が提供する機能はもっと多く、その後は過去を切り替える可能性があると感じています.

リファレンスリンク

  • doctestドキュメント翻訳
  • Doctest Github倉庫
  • Doctest公式ルーチン
  • Vczhカスタムテストフレームワーク
  • を実現