C++ googlemock测试中基类中的虚函数
我是google mock的新手,从google官方回购中找到了一些基本参考资料 我有一个非常简单的类C++ googlemock测试中基类中的虚函数,c++,unit-testing,gmock,C++,Unit Testing,Gmock,我是google mock的新手,从google官方回购中找到了一些基本参考资料 我有一个非常简单的类资源,我想模拟这个类。在浏览GoogleMock备忘单时,我意识到派生mock类的基类中的所有函数都是虚拟的 问题: 为了创建一个模拟类,是否有必要让基类中的所有函数都是虚拟的,或者这样做是一种好的做法?下面是Resource类的外观 template <typename T> class Resource { public: Resource() : client(nullp
资源
,我想模拟这个类。在浏览GoogleMock备忘单时,我意识到派生mock类的基类中的所有函数都是虚拟的
问题:
为了创建一个模拟类,是否有必要让基类中的所有函数都是虚拟的,或者这样做是一种好的做法?下面是Resource
类的外观
template <typename T>
class Resource {
public:
Resource() : client(nullptr) {}
bool isAvailable() const { return client == nullptr; }
bool isClient(const GID<T>& gid_) const { return client == nullptr ? false : client->isEqual(gid_); }
bool registerClient(const GID<T>& gid_) { return (isAvailable()) ? setClient(gid_) : false; }
bool unregisterClient(const GID<T>& gid_) { return isClient(gid_) ? resetClient() : false; }
private:
bool setClient(const GID<T>& gid_) {
client.reset(new Client<T>(gid_));
return true;
}
bool resetClient() {
client.reset();
return true;
}
std::unique_ptr<Client<T>> client;
};
模板
类资源{
公众:
Resource():客户端(nullptr){}
bool isAvailable()常量{return client==nullptr;}
bool-isClient(const-GID&GID_)const{return client==nullptr?false:client->isEqual(GID_)}
bool registerClient(const GID&GID_){return(isAvailable())?setClient(GID_):false;}
bool unregistereclient(const GID&GID_){return isClient(GID_)→resetClient():false;}
私人:
bool setClient(const GID和GID_2;){
客户端重置(新客户端(gid));
返回true;
}
bool resetClient(){
client.reset();
返回true;
}
std::唯一的ptr客户端;
};
GoogleMock重写方法以提供不同的实现,以后可以使用EXPECT\u CALL
跟踪和修改这些方法。因此,是的,任何要模拟的方法都应该是virtual
,任何接受Resource
的类都应该通过引用或指针来接受它以使用多态性。