代码实验室:C语言 代码测试 之 代理函数

21 篇文章 0 订阅
8 篇文章 0 订阅

代码实验室:C语言 代码测试 之 代理函数

有时单元测试的时候,需要检验 子函数的入参。如下代码,caculate被调用时,想要获取子函数 square的参数 value 的值。
这时就需要用到 代理函数的功能。

int square( int value)
{
	return value*value;
}
int caculate(int count)
{
	int ret=0;
	for (int i=1;i<count;++i)
	{
		ret+=square(i);
	}
	return ret;
}

gmock代理函数语法:
ON_CALL(_mock,function)
    .WillByDefault(my_function); 

单元测试代码

代码里申明了代理函数 my_square, 注意代理函数的申明需要和原函数square一致

// 单元测试之 代理函数
int my_square( int value)
{
	printf("proxy got value :%d\n",value);
	return square(value);
}
TEST_F(THE_UNIT, case_test1)
{
	ON_CALL(_mock,square)
		.WillByDefault(my_square);
	caculate(4);
}

设置代理后,caculate函数里每次调用square,都会运行代理函数,my_square。
my_square获取到 value,后再调用原函数square进行处理。


运行结果,value的变化都获取到了,是不是非常简单好用?

[ RUN      ] test_proxy.case_test1
proxy got value :1
proxy got value :2
proxy got value :3
[       OK ] test_proxy.case_test1 (0 ms)

 

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

代码实验室:让struct支持关键字赋值
源代码下载, 复制到浏览器直接下载ctestcode.cn/test/0521_proxy_function.ctestcode
C语言编码助手下载地址 v1.35
win10 x64
版本下载
ctestcode.cn/ctestcode_win10.zip
linux x64
版本下载
ctestcode.cn/ctestcode_linux_x64.zip

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值