1

我只是在学习使用 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 基类文件链接到单元测试中来使用相同的机制。
4

0 回答 0