c 单元测试库 check 简单用法 示例

12 篇文章 1 订阅
2 篇文章 0 订阅

介绍

c++ 下可以用 gtest

c 下的话  用 check     https://github.com/libcheck/check   因为我最近看的源码 open62541 用的是 check

   或者  Criterion  https://github.com/Snaipe/Criterion     github 上的星星更多一点,示例好像也蛮简单的。

 

本文提供 check 的简单测试示例

 

安装check

源码安装

git clone https://github.com/libcheck/check.git

cd check/
mkdir build
cd build/
cmake ..
make
CTEST_OUTPUT_ON_FAILURE=1 make test
sudo make install

sudo apt-get install check  应该也可以吧? 我没有试过

 

用法

新建 hello.c

#include <stdio.h>
#include <stdlib.h>
#include <check.h>

int sub(int a, int b) {
    return a-b;
}

int add(int a, int b) {
    return a+b;
}

START_TEST(test_sub) {
    ck_assert_msg(sub(7, 2) == 5, "error, 7 - 2 != 5"); 
    ck_assert_msg(sub(6, 2) == 3, "error, 6 - 2 != 4");
}
END_TEST

START_TEST(test_add) {
    ck_assert(add(7, 2) == 9);
    ck_assert(add(7, 5) == 12); 
}
END_TEST

Suite * make_add_suite(void) {
    Suite *s = suite_create("add");       // 建立Suite
    TCase *tc_math = tcase_create("math");  // 建立测试用例集
    suite_add_tcase(s, tc_math);           // 将测试用例加到Suite中
    tcase_add_test(tc_math, test_sub);     // 测试用例加到测试集中
    tcase_add_test(tc_math, test_add);     // 测试用例加到测试集中
    return s;
}

int main(int argc, char* argv[]) {
    SRunner *sr;
    sr = srunner_create(make_add_suite()); // 将Suite加入到SRunner
    srunner_run_all(sr, CK_NORMAL);
    int n = srunner_ntests_failed(sr);         // 运行所有测试用例
    srunner_free(sr);

    return 0;
}

 

编译

gcc hello.c -o hello -lcheck -lrt -lm

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值