c++ - 谷歌模拟 : Mock private variable member that is instantiated in target class's constructor

标签 c++ unit-testing tdd googletest googlemock

我的问题和Mockito: Mock private field initialization一样但对于 Google Mock 框架。简而言之:

class Target {
private:
    Person person = new Person();

public:
    void testMethod() {
        person.someMethod();
    }
};

如何在对 Target 类进行单元测试时模拟 person 实例?

最佳答案

这里没有答案:只是不要这样做。

您的问题是此处对 new 的调用。事实是:这使得测试变得困难,而且它还在 TargetPerson 类之间创建了非常紧密的耦合。

默认的替代方案是:为 Target 类提供一个工厂,为您创建 Person 对象。

通过寻求该解决方案,您

  • 避免需要模拟对 new 的调用
  • 您最终会得到更好的设计!

除非我误读了 documentation ,无论如何,通过 C++ 模拟不可能模拟对 new 的调用。

关于c++ - 谷歌模拟 : Mock private variable member that is instantiated in target class's constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44916123/

相关文章:

c++ - 什么时候删除模板实例比删除非模板重载更可取?

javascript - 使用 Jasmine 对 javascript/jQuery 事件进行单元测试

angularjs - 测试正确的 $scope 初始化是否是 "testing someone else' 代码的示例”?

java - Junit配置错误: You must provide at least one argument for this @ParameterizedTest

tdd - 单一开发人员应该使用 TDD 的一些原因是什么?

unit-testing - 带有 Sitecore 7 和 TFS 2012 CI 的 TDD

c++ - 如何设置默认g++?

c++ - 尝试执行 gcc 错误 'cc1' : execvp: No such file or directory when running with non-root user

c++ - Windows 下 HUGE_VALF 未定义

android - UnitTest JSONObject 显示 null