模拟gtest中的私有成员变量



我的意图是测试一个函数,该函数根据布尔值调用两个不同的函数。定义的原始类将布尔值声明为private。函数的形式是:

funcA()
{
if(B) funcB;
else funcC;
}

这里B是私有成员布尔变量,其值在其他函数中发生了更改,默认情况下定义为false。我想为这个类写一个谷歌测试用例,如果B为true,我想使用EXPECT_CALL(*classInstance, funcB).Times(1),否则使用EXPECT_CALL(*classInstance, funcC).Times(1)。有人能告诉我如何在测试用例中更改布尔值B的值吗?

有人能告诉我如何在测试用例中更改布尔值B的值吗?

你不能*,这就是private成员的全部意义。好消息是,你不应该
测试类的可观察行为,而不是它的详细信息(如私有布尔变量(。

我在这里看到两个测试用例:

  • funcC在创建待测单元后调用funcA时调用,并且
  • 如果在funcA之前调用someOtherFuncThatChangesB,则调用funcB

*有访问私人成员的方法,但通常不推荐使用。private部件应该可以自由更改,而无需更改测试(只要逻辑保持不变(。

相关内容

  • 没有找到相关文章

最新更新