C-doctest-测试框架

本文介绍了C++的doctest单元测试框架,它以其简洁易用性著称,只需包含一个头文件即可开始测试。文章展示了无main函数和有main函数的测试样例,并说明了如何在不同情境下运行测试。虽然doctest功能丰富,但作者提到GoogleTest提供了更多功能,未来可能会考虑切换。文章还提到了doctest的相关资源链接,包括官方文档、GitHub仓库和Vczh的自定义测试框架实现。

测试框架

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 自定义测试框架实现
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值