前言
C语言单元测试框架汇总见:C语言单元测试框架详解:第一篇_魏波-的博客-CSDN博客
今天给大家介绍C语言单元测试框架:Check,官网:Check | Unit testing framework for C
大家可以通过以下地址获取check的最新源码:
git clone https://github.com/libcheck/check.git
1、Check框架特点
(1)提供一个小巧的单元测试接口
(2)每一个测试用例的运行都fork一个子进程,可以避免测试框架由于coredump而崩溃。
(3)测试案例运行在各自独立的地址空间,所以断言失败和代码错误造成的段错误或者其他的信号可以被捕捉到。
(4)测试的结果显示也兼容以下这些格式:Subunit、TAP、XML和通用的日志格式。
(5)支持多平台:GNU/Linux, GNU/Hurd, BSD, and Mac OSX,Windows
2、Check API
Check: check.h File Reference
3、check教程
Check 0.15.2: 3 Tutorial: Basic Unit Testing
4、Check框架使用
第一步:CentOS下安装ckeck
[root@k8s-master01 check]# yum install check
GNU/Linux、GNU/Hurd、OSX、BSD、Windows、Solaris等环境安装check教程:Check | Installing Check
第二步:创建工程
工程目录结果如下:
[root@k8s-master01 check]# tree
.
├── include
│ ├── sub.h
│ └── unit_test.h
├── makefile
├── sub
│ └── sub.c
├── sub.o
└── unit_test
├── test_main.c
└── test_sub.c
3 directories, 7 files
sub.h
#ifndef _SUB_H
#define _SUB_H
int sub(int a, int b);
#endif
unit_test.h
#ifndef _UNI_TEST_H
#define _UNI_TEST_H
#include "check.h"
Suite *make_sub_suite(void);
#endif
sub.c
#include "sub.h"
int sub(int a, int b) {
return a-b;
}
test_main.c
#include "unit_test.h"
#include
int main(void) {
int n, n1;
SRunner *sr, *sr1;
sr = srunner_create(make_sub_suite()); // 将Suite加入到SRunner
srunner_run_all(sr, CK_NORMAL);
n = srunner_ntests_failed(sr); // 运行所有测试用例
srunner_free(sr);
return (n == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}
test_sub.c
#include "check.h"
#include "unit_test.h"
#include "sub.h"
START_TEST(test_sub) {
fail_unless(sub(6, 2) == 4, "error, 6 - 2 != 4");
}
END_TEST
Suite * make_sub_suite(void) {
Suite *s = suite_create("sub"); // 建立Suite
TCase *tc_sub = tcase_create("sub"); // 建立测试用例集
suite_add_tcase(s, tc_sub); // 将测试用例加到Suite中
tcase_add_test(tc_sub, test_sub); // 测试用例加到测试集中
return s;
}
makefile
vpath %.h include #vpath 指定搜索路径
vpath %.c add
vpath %.c unit_test
objects = add.o test_add.o
test: test_main.c $(objects)
gcc -I include $^ -o test -lcheck
all: $(objects)
$(objects): %.o: %.c
gcc -c -I include $< -o $@
.PHONY: clean
clean:
rm *.o test
第三步:运行
直接在工程目录下运行命令make test即可生成可执行文件test,之后运行./test就可以看到测试结果了。
make test
./test
Running suite(s): sub
0%: Checks: 1, Failures: 1, Errors: 0
unit_test/test_sub.c:12:F:sub:test_sub:0: error, 6 - 2 != 4
版权归原作者 魏波. 所有, 如有侵权,请联系我们删除。