Use*_*ser 4 c++ unit-testing googletest googlemock
在 GMock 中使用 Visual Studio 2010 C++。尝试为我的类使用的第三方类创建存根对象,但出现以下错误:
错误:不允许抽象类类型“ThirdPartyClassFake”的对象。
第三方类定义如下:
namespace ThirdPartyNamespace
{
class __declspec(novtable) ThirdPartyClass : public ThirdPartyBaseClass
{
public:
virtual bool Hello() const = 0;
virtual bool Goodbye() const = 0;
};
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个模拟:
namespace ThirdPartyNamespace {
class ThirdPartyClassFake : public ThirdPartyClass {
public:
MOCK_CONST_METHOD0(Hello, bool());
MOCK_CONST_METHOD0(Goodbye, bool());
};
}
Run Code Online (Sandbox Code Playgroud)
现在在我的测试中,我正在尝试做:
TEST(MyService, WhenCalled_DoesTheRightThingTM) {
// Arrange
ThirdPartyClassFake stub;
// Act
...
// Assert
...
}
Run Code Online (Sandbox Code Playgroud)
错误在“ThirdPartyClassFake 存根;” 线。为什么会出现此错误以及如何成功创建模拟/存根对象?
具体的问题是,虽然我ThirdPartyClass在我的模拟对象中实现了ThirdPartyBaseClass的虚方法,但我忽略了实现的虚方法。这导致了错误。一旦我添加了MOCK_METHOD对这些方法的调用,错误就消失了。
| 归档时间: |
|
| 查看次数: |
6334 次 |
| 最近记录: |