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

Assertions