Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ googlemock:在目标类';中实例化的Mock私有变量成员;s构造函数_C++_Unit Testing_Tdd_Googletest_Googlemock - Fatal编程技术网

C++ googlemock:在目标类';中实例化的Mock私有变量成员;s构造函数

C++ googlemock:在目标类';中实例化的Mock私有变量成员;s构造函数,c++,unit-testing,tdd,googletest,googlemock,C++,Unit Testing,Tdd,Googletest,Googlemock,我的问题与谷歌模拟框架的问题相同。简言之: class Target { private: Person person = new Person(); public: void testMethod() { person.someMethod(); } }; 在为Target类进行单元测试时,如何模拟person实例?这里没有答案:不要这样做 您的问题是在此处调用new。事情是这样的:这使得测试变得困难,而且它也在目标和人员类之间创建了一个非常紧密的耦

我的问题与谷歌模拟框架的问题相同。简言之:

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

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

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

这里没有答案:不要这样做

您的问题是在此处调用
new
。事情是这样的:这使得测试变得困难,而且它也在
目标
人员
类之间创建了一个非常紧密的耦合

默认的备选方案是:为为为您创建
Person
对象的
Target
类提供工厂

通过采用该解决方案,您可以

  • 避免模拟调用
    new
  • 你最终会得到一个更好的设计

除非我误解了,嘲笑C++的代码<新>代码不可能用C++嘲讽。< / P>是的,我明白你要说什么。但是我正在为一个生产中的项目添加单元测试,最终我使用了很多预处理器指令来解决这类问题:(你能给我一些建议吗