【发布时间】:2022-07-25 23:19:51
【问题描述】:
我有一个模拟
class mockA: public A{
public:
.......
MOCK_MOTHOD0(functionB, bool());
}
而functionB是A类中受保护的虚函数。我可以在我的测试中使用模拟方法
TEST(test,testA){
.....
mockA objA;
EXPECT_CALL(objA, functionB()).WillOnce(Return(true));
}
效果很好。但是我也有一些我不想模拟函数B的测试用例。我应该怎么办?我能想到的一种方法是创建另一个与 mockA 内容完全相同但没有行 MOCK_MOTHOD0(functionB, bool()); 的模拟类。有没有更好的办法?谢谢。
【问题讨论】:
-
测试体的
.....中是否定义了class mockA? -
您可能对
NiceMockorStrictMock感兴趣。 -
@Eljay 为什么我需要定义一个类? mockA 类在
A.test.cc文件中,class A在另一个文件中A.hh -
为什么我需要定义一个类?你有定义
mockA的理由吗? -
@Eljay。因为我想在我的 gtest 中模拟 A 类中的一些函数,包括
functionB。就我而言,functionB很特别,因为有时我需要模拟它,有时我不需要模拟它。对于像functionC/D/E这样的其他功能,我仍然需要模拟它们。所以我想知道如果在某些情况下我不需要模拟函数B,我是否必须创建另一个几乎完全相同的类。如果是这样,我将不得不重用代码来模拟函数C/D/E
标签: c++ unit-testing mocking googletest googlemock