Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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++ C++;-如何模拟来自不同类、不同头的函数?_C++_Gmock - Fatal编程技术网

C++ C++;-如何模拟来自不同类、不同头的函数?

C++ C++;-如何模拟来自不同类、不同头的函数?,c++,gmock,C++,Gmock,我有一个包含标题的模块,比如h1、h2、h3和cpp1、cpp2、cpp3。我正在为cpp3文件say Foo()中的函数编写单元测试函数;。 Foo()函数调用 cpp1中的函数F1()-类名为“class1”的头h1中的定义和声明 cpp2中的函数F2()-标题h2中的定义和声明,其类名为“class2” 如果我有另一个单元测试创建模块,我正在“.cc”文件中编写代码 因此,我的问题是: 如何在一个模拟文件中为函数F1和F2定义模拟类,因为我假设我的模块应该只有一个模拟文件 我是否需要

我有一个包含标题的模块,比如h1、h2、h3和cpp1、cpp2、cpp3。我正在为cpp3文件say Foo()中的函数编写单元测试函数;。 Foo()函数调用

  • cpp1中的函数F1()-类名为“class1”的头h1中的定义和声明
  • cpp2中的函数F2()-标题h2中的定义和声明,其类名为“class2”
如果我有另一个单元测试创建模块,我正在“.cc”文件中编写代码


因此,我的问题是:

  • 如何在一个模拟文件中为函数F1和F2定义模拟类,因为我假设我的模块应该只有一个模拟文件
  • 我是否需要在一个模拟文件中为class1和class2创建模拟类
  • 然后我如何在我的“.cc”文件中使用它来实现单元测试代码
  • 您当然可以在一个文件中定义所有mock,但我认为在单独的头中定义mock更常见。例如,如果您有一个类Foo,那么您将有一个单独的文件MockFoo.h,它定义了mock对象

  • 如上所述,您可以在同一个文件或单独的文件中为class1和class2创建模拟

  • 在单元测试文件中,只需包含模拟对象的相关头。如果你有一个包含所有mock的文件,你只需要#包含该文件,如果你有多个文件(即MockClass1.h、MockClass2.h),你只需要#包含所有文件


  • 谢谢你的回答!!我现在很清楚了。还有一些查询:同一头文件中的基类和派生类声明都是H1.h。类基类{bool INLINEBASE1(){return true;}bool INLINEBASE2(){return false;}}}派生类:公共基类{FOO(){if(INLINEBASE1()&&INLINEBASE2())..}有如下问题:1。如果我正在为函数编写单元测试,请从派生类中选择FOO()。Cpp1.cpp文件。但是FOO()函数有一些来自基类的内联函数调用。那么如何模拟内联基类函数呢?