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

C++ - how to mock functions from different class, different headers?

本文关键字:同类 函数 何模拟 模拟 C++      更新时间:2023-10-16

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

  • 来自 cpp1 的函数 F1() - 类名为"class1"的标头 h1 中的定义和声明。
  • 来自 cpp2 的函数 F2() - 标头 h2 中的定义和声明,其类名为 "class2"。

如果我有另一个用于创建单元测试的模块,我正在".cc"文件中编写代码。


所以我的问题是:

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

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

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