C++-doctest-測試框架


C++-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\n", "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 寫的一個簡單的測試框架的實現, 了解原理,然后發現了這個C++庫, 真的很好用, 目前自己需要的功能夠用, 后續更過功能還要自己去啃 doctest 文檔

但是感覺 GoogleTest 提供的功能更多, 后續可能切換過去,

參考鏈接

  1. doctest 文檔翻譯
  2. Doctest Github 倉庫
  3. Doctest 官方例程
  4. Vczh 自定義測試框架實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM