有时C语言代码测试的时候,需要检验 函数参数 的取值范围 是否正确。
这个时候就需要用到 gmock的参数匹配器。
代码举例: 测试下面的代码,验证CheckNumber的参数范围.
extern int CheckNumber(int number);
void Sample1(int count)
{
for(int i=1;i<=count;i++)
{
CheckNumber(i/2);
}
}
下面测试用例使用了 匹配器 Le 小于等于( less equal )
期待 CheckNumber 的参数 范围小于等于5. 并且运行测试为10次
TEST_F(THE_UNIT, test1)
{
EXPECT_CALL(_mock,CheckNumber(Le(5))) //期待参数小于等于5
.Times(10); //期待函数运行测试为10次
Sample1(10);
}
Le匹配器是如何实现的呢。
让我们自己来实现一个把。
带参数的 MATCHER语法如下
MATCHER_P(name, param_name, description_string) { statements; }
所以,Le匹配器的实现代码如下,是不是很简单。
MATCHER_P(LessEqual, n, "")
{
return (arg<=n);
}
gmock常用内置匹配器如下
本例中,所有的代码已经全部准备好了,只需要下载 C语言编码助手 ,直接导入,就可以进行实验,学习和验证。
代码实验室:让struct支持关键字赋值 | |
源代码下载, 复制到浏览器直接下载 | ctestcode.cn/test/210530_matcher_test.ctestcode |
C语言编码助手下载地址 v1.37 | |
win10 x64 版本下载 | ctestcode.cn/ctestcode_win10.zip |
linux x64 版本下载 | ctestcode.cn/ctestcode_linux_x64.zip |