【发布时间】:2021-08-26 15:34:36
【问题描述】:
我是谷歌测试环境的新手。我有一个用 C 编写的示例代码,想用 Google 测试框架执行单元测试。
下面是示例代码
// My module function (test.c)
void Update_user_value(void)
{
int user_value;
user_value = get_val_module(); /* return a integer value*/
if(user_value == 0x1)
update_user_flag(true);
else
update_user_flag(false);
}
// This function is in the other module(stub.c) , so we can use Mock function
void update_user_flag(bool val)
{
struct *temp;
if(val == true)
{
temp->userflag = 1;
}
else
{
temp->userflag = 0;
}
}
我想为Update_user_value 函数编写一个测试用例(仅用于test.c)。通过这个函数,我将一些标志值发送到其他模块(update_user_flag)来设置标志。
我已经写了一个这样的简单谷歌测试
TEST_F(sampletest, setuser_flag_true_testcase)
{
//Get value from module
ON_CALL(*ptr1, get_val_module()).WillByDefault(Return(0x1)); //Mock function
EXPECT_CALL(*ptr2, get_val_module(_)).Times(1); // Mock function
Update_user_value();
}
TEST_F(sampletest, setuser_flag_false_testcase)
{
//Get value from module
ON_CALL(*ptr1, get_val_module()).WillByDefault(Return(0x0)); //Mock function
EXPECT_CALL(*ptr2, get_val_module(_)).Times(1); // Mock function
Update_user_value();
}
我的问题:这个测试用例是否足以验证Update_user_value 函数?
我也想知道,EXPECT_CALL() 是否适合用于为其他模块设置值?
如果我的理解有误,请给我推荐一个更好的测试用例?
【问题讨论】:
标签: c++ c unit-testing googletest googlemock