Cmockery
文档:https://code.google.com/p/cmockery/wiki/cmockery
安装
Mac 环境下:
brew install cmockery
库文件路径:/usr/local/lib
头文件路径:/usr/local/include/google
执行测试
Cmockery 的单元测试用例是一个函数,用 void function(void **state)
来签名
使用 unit_test(f)
宏将多个测试用例的函数指针初始化到一个表中(一个 UnitTest
结构体数组)
这个表传给 run_tests
宏来执行测试用例
编译的时候加上 -lcmockery
参数
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <google/cmockery.h>
void null_test_success(void **state) {
}
int main(int argc, char *argv[])
{
const UnitTest tests[] = {
unit_test(null_test_success),
};
return run_tests(tests);
}
异常处理
在测试函数被 run_tests()
执行之前,异常和信号处理被覆盖为一个简单处理:
在异常发生时,简单的显示错误并退出测试函数。
如果异常发生在测试函数外部,例如 Cmockery 自身,程序将终止运行并返回错误码
失败条件
当测试函数被 run_tests()
执行的时候出现失败,该测试函数将会退出,测试程序将执行下一个测试函数
测试失败的最终给出通过 Cmockery 的 fail()
函数,如下的事件将导致测试失败
- Assertions
- Exceptions
- Memory leaks
- Mismatched setup and tear down functions
- Missing mock return values
- Unused mock return values
- Missing expected parameter values
- Unused expected parameter values