C代码单元测试(二)

本文介绍google的C代码单元测试框架Cmockery ,根据官方介绍,Cmockery是一个用于简化C应用程序单元测试代码的轻量级库。

A lightweight library to simplify and generalize the process of writing unit tests for C applications.

源码连接

Cmockery 测试与 Cmockery 库、标准 C 库和被测试的模块链接,被编译成独立的可执行文件。尽管代码的实际目标运行环境与测试环境有所差别,单元测试依然是有效的,因为单元测试是在功能逻辑级别的验证,没有必要和目标运行环境一样。

如果不做一些修改可能无法将模块编译成测试应用程序,因此在编译Cmockery单元测试程序时,应该做一些宏定义,以便进行条件编译。

windows下编译:

> vsvars.bat
> cd windows
> nmake

在windows cmd中执行以上命令,本文中使用visual studio2017,nmake是visual studio的命令,需要在环境变量中配置visual studio,在cmd中执行VsDevCmd.bat文件即可。

 成功之后在windows目录下会生成cmockery.lib库文件和对应的.h文件,将库和.h文件添加到我们的测试工程中,就可以开始进行单元测试啦。

示例使用被测代码如下:

int add_user(int a, int b)
{
	return a + b;
}
int sub_user(int a, int b)
{
	return a - b;
}

测试代码如下:

#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include "cmockery.h"
/* Ensure add() adds two integers correctly. */
void test_add(void **state) {
	assert_int_equal(add_user(3, 3), 6);
	assert_int_equal(add_user(3, -3), 0);
}
/* Ensure sub() subtracts two integers correctly.*/
void test_sub(void **state) {
	assert_int_equal(sub_user(3, 3), 0);
	assert_int_equal(sub_user(3, -3), 6);
}
int main(int argc, char *argv[])
{
	const UnitTest tests[] = {
		unit_test(test_add),
		unit_test(test_sub),
	};
	return run_tests(tests);
}

运行测试工程,输出测试结果:

test_add: Starting test

test_add: Test completed successfully.

test_sub: Starting test

test_sub: Test completed successfully.

All 2 tests passed

请按任意键继续. . .

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值