c语言的测试框架cmocka的简单使用

2021-03-18  本文已影响0人  潘雪雯

cmocka在使用之前需要引入四个头文件

#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <stdint.h>

基本的测试框架如下所示:

#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <stdint.h>
// 在 #include <cmocka.h> 之前,必须先 #include 上面四个头文件,这是官网 The CMocka API 中明确要求的,在 cmocka.h 头文件开头部分也有注明。
#include <cmocka.h>

/* null_test_success 函数是测试用例: 什么也没有做,而且成功返回了*/

static void null_test_success(void **state) {
    (void) state; /* unused */
    int a = 0;
    assert_true(a == 1);
    
    //printf("test\n");
}

int main(void) {
      // CMUnitTest 结构体是测试用例集(可以包含多个测试用例),每个测试用例可以设定可选的 startup 和 teardown 函数,用于负责执行测试前的初始化和测试后的销毁工作
    const struct CMUnitTest tests[] = {
    //  用了 cmocka_unit_test 宏来填充 CMUnitTest 结构体中的测试用例( startup 和 teardown 为 NULL)
        cmocka_unit_test(null_test_success),
    };

// cmocka_run_group_tests 函数用于启动测试并展示测试结果,可以为测试集指定全局的 startup 和 teardown(示例中都是NULL)。
    return cmocka_run_group_tests(tests, NULL, NULL);
} 

c语言的编译方式:
需要安装cmocka库

gcc -o test_unit test_unit.c -lcmocka 
./test_unit

运行结果如下:

[==========] Running 1 test(s).
[ RUN      ] null_test_success
[  ERROR   ] --- a == 1
[   LINE   ] --- test_unit.c:13: error: Failure!
[  FAILED  ] null_test_success
[==========] 1 test(s) run.
[  PASSED  ] 0 test(s).
[  FAILED  ] 1 test(s), listed below:
[  FAILED  ] null_test_success

 1 FAILED TEST(S)

解释一下结果:
1, 构建一个测试函数null_test_success,其中使用到断言函数assert_true
由结果可以看出来: 在断言函数中我用到了一个伪命题a == 1,这是不成立的。所以从结果反馈出来有一个测试失败

参考

上一篇下一篇

猜你喜欢

热点阅读