介绍
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