C語言單元測試框架Check
阿新 • • 發佈:2019-01-01
什麼是Check
Check是C語言的一個單元測試框架。它提供一個小巧的單元測試介面。測試案例執行在各自獨立的地址空間,所以斷言失敗和程式碼錯誤造成的段錯誤或者其他的訊號可以被捕捉到。另外,測試的結果顯示也相容以下這些格式:Subunit、TAP、XML和通用的日誌格式。
Check is a unit testing framework for C. It features a simple interface for defining unit tests, putting little in the way of the developer. Tests are run in a separate address space, so both assertion failures and code errors that cause segmentation faults or other signals can be caught. Test results are reportable in the following: Subunit, TAP, XML, and a generic logging format.
Check支援的平臺
Check支援大部分的UNIX相容平臺。
可以通過以下命令得到Check的最新版本。
git clone https://github.com/libcheck/check.git
Check使用
本人以一個只做減法的工程來進行說明Check的使用。
直接看工程目錄結構:
.
├── include
│ ├── sub.h
│ └── unit_test.h
├── makefile
├── sub
│ └── sub.c
└── unit_test
├── test_main.c
└── test_sub.c
sub.c檔案
#include "sub.h"
int sub(int a, int b) {
return 0;
}
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
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;
}
test_main.c檔案
#include "unit_test.h"
#include <stdlib.h>
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;
}
makefile檔案
vpath %.h include #vpath 指定搜尋路徑
vpath %.c sub add
vpath %.c unit_test
objects = sub.o test_sub.o
test: test_main.c $(objects)
gcc -I include $^ -o test -lcheck
all: $(objects)
$(objects): %.o: %.c
gcc -c -I include $< -o [email protected]
.PHONY: clean
clean:
rm *.o test
工程配置完成後,直接在工程目錄下執行命令make test
即可生成可執行檔案test
gcc -c -I include sub/sub.c -o sub.o
gcc -c -I include unit_test/test_sub.c -o test_sub.o
gcc -I include unit_test/test_main.c sub.o test_sub.o -o test -lcheck
之後執行./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