前言
Stub用于在进行单元测试时,自己所写的函数调用的依赖的函数。但是这个依赖的函数在进行测试时可能无法得到我们想要的结果,就可以使用Stub.
1. 使用方法
1.1 想要测试的函数
/*
功能:判断一个数是否大于100
返回值:0,不大于100
1,大于100
*/
int fun_greater100(int a)
{
if(check(a) <= 100){
return 0;
}
return 1;
}
它所依赖的函数,即我们要打桩的函数:
/* 依赖的函数 */
int check(int a)
{
return a+50;
}
1.2 编写TEST_F
#include <gtest\gtest.h>
#include <gtest\stub.h>
#include "func.h"
int check_stub1(int a)//桩函数
{
return 50;
}
TEST(TestSuite1, fun_greater100_1){
Stub stub;//实例化对象
stub.set(check, check_stub1); //设置桩,将check函数替换为check_stub1
int ret = fun_greater100(101); //执行fun_greater100则会调用桩函数check_stub1
EXPECT_EQ(ret, 0);
}
这个感觉很好,但是当需要编写很多用例,每个用例对于该函数的期望都不一样。
那就要写很多桩函数。这个时候可能使用Mock会更方便一些。