c++ 单元测试_嵌入式自动化单元测试(2)-Cmocka

介绍

cmocka作为开源的单元测试工具,基于google发布的cmockery工具,目前被libssh、csync等软件所采用。作为源代码单元测试工具,其功能强大,且方便使用。本文结合单元测试中的一些规范,对于cmokca的使用进行分析和说明。

5e2dfe5fdea6246d8b07cf3653e152ea.png

cmocka基本使用说明

cmocka基于google的单元测试工具cmockery,其主要功能有:

  • 内存操作检查
  • 模拟函数返回值
  • 函数入参检查
  • 不同类型的验证宏定义

cmocka作为独立的工具,编译安装之后通过lib库方式进行调用。为了便于使用,在测试过程中,也可以直接将cmocka中的cmocka.c作为源文件,然后在单元测试程序中包含cmocka.h。

1. 内存操作检查

cmocka通过宏定义,将malloc、calloc、free重定向到自己实现的内存操作函数_test_malloc、_test_calloc、_test_free。

记录了内存操作的大小,底层仍然调用了glibc的malloc、calloc、free函数。

2. 模拟函数返回值

在测试模块中,可以通过will_return(function, type)设置模拟函数function的返回值type,然后在模拟函数中,通过mock_type(type)函数得到相应type的值。Cmocka通过维护数据堆栈进行上述操作,即:

mock_type(type)和will_return(function, type)是成对出现的。

通过设定模拟函数中的返回值,避免了对于模拟函数的多次实现。

3. 函数入参检查

程序模块unit.c中的函数func_t运行过程中调用了func_call,func_t根据输入和运行逻辑的不同,在调用func_call是传入的参数不同,可以通过设置func_call对于其参数进行检查,验证func_t在调用func_call之前执行是否正常。

通过check_expected(param)和expect_value(param, value)检查。

4. assert验证函数

cmocka根据不同的数据类型,提供了bool,int,memory addr等不同的验证比较函数。可以针对不同的验证类型,调用不同的函数进行验证。

测试函数定义和执行

cmocka中定义了UnitTest结构体,存放函数名称,函数入口和函数类型。run_tests函数直接执行UnitTest结构体数组,进行单元测试。

cmocka

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值