代码实验室:C语言 代码测试 之 系统函数打桩

21 篇文章 0 订阅
12 篇文章 2 订阅

有时单元测试的时候,遇到系统函数,也可以进行打桩,来测试不同的的代码分支
我们这次来讲解如何 对系统函数malloc进行打桩。
使用ctestcode工具 ,系统函数打桩只需要做如下的设置,这样malloc的桩就设置好了

[auto_mock]
_MOCK_malloc
[real_mock] 
malloc

被测试代码如下,其中一个分支,只有malloc返回NULL时,才会运行到。

void * test1(int size)
{
	#define TEXT  "hello world\n"
	void *p=malloc(size);
	if (p)
	{
		memcpy(p,TEXT,sizeof(TEXT));
	}
	if (p)
	{
		printf("%s",p);
	}else
	{
		printf("NG\n");
	}
	return p;
}

测试异常分支,malloc 返回NULL的情况。

ON_CALL(_mock,malloc)
.WillByDefault(Return(nullptr)); 

测试正常分支,使用MOCK_OFF关闭桩函数。

TEST_F(THE_UNIT, test1_UT_case1_MOCK_ON_OFF)
{
	ON_CALL(_mock,malloc)
		.WillByDefault(Return(nullptr)); 
	MOCK_ON(malloc);
	test1(20);
	MOCK_OFF(malloc);
	test1(20);
}

最后所有分支也轻松测试完成。

[ RUN      ] hello_mock.test1_UT_case1_MOCK_ON_OFF
NG
hello world
[       OK ] hello_mock.test1_UT_case1_MOCK_ON_OFF (0 ms)
 命中[ 8 ]总行数[ 8 ]覆盖率[100.0%] 

本例中,所有的代码已经全部准备好了,只需要下载  C语言编码助手 ,直接导入,就可以进行实验,学习和验证。

代码实验室:系统函数打桩
源代码下载, 复制到浏览器直接下载ctestcode.cn/test/211003_hello_mock.ctestcode
C语言编码助手下载地址 v1.37
win10 x64
版本下载
ctestcode.cn/ctestcode_win10.zip
linux x64
版本下载
ctestcode.cn/ctestcode_linux_x64.zip

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值