使用gmock而不依赖注入

时间:2013-10-24 09:42:02

标签: c++ gmock

我刚学会使用Google Mock。当我测试一个类,我可以将模拟对象作为指针或引用(依赖注入)传递时,它工作正常。当我有一个不使用DI的课程时,我还没有找到解决方案。

我们目前有很多不使用DI和接口的代码,例如:

#include "ReadDbObjects.h"

class ObjectManager
{
public:
  ObjectManager()
  {
    ReadDbObjects db_reader;
    mObjects = db_reader.ReadAll();
  }
private:
  vector<MyObject> mObjects;
}

(这极其简化,但应解释问题)

我们目前通过为单元测试创​​建一个名为ReadDbObjects.cpp的文件(其中包含带有类声明的原始ReadObjects.h)来测试这样的东西,该文件静态链接到单元测试。在这个文件中,我们模拟了ReadAll-Method,因此它返回了测试所需的对象。这个文件很难维护,它需要另一个在ReadObjects.cpp和单元测试中都知道的文件,因此测试和模拟的ReadObjects类之间的值可以在两个方向上传递。

  1. 在这个例子中,有没有办法使用gmock模拟ReadObjects?
  2. 当我需要模拟基类时,可以使用gmock吗?这里我们通过将模拟的cpp基类文件链接到单元测试中来使用相同的机制。

0 个答案:

没有答案