7

我正在使用 gmock 在遗留代码中模拟我的依赖项。其中一个类有一个带有 11 个参数的方法。当我尝试使用 MOCK_METHOD11_WITH_CALLTYPE 来模拟它时,我发现这个宏不存在。gmock 最多只支持 10 个参数。你对此有何建议?我用假人实现这个方法吗?还是复制和扩展宏?谢谢!

PS,我现在不需要在我的测试中模拟这个方法,但将来可能需要这样做。

此致,

4

3 回答 3

6

参数超过 10 个的方法可能是麻烦的迹象。我可以建议一种解决方法,这将有助于您的具体情况,但除了模拟之外,这也可能是一个好主意。将几个有意义的参数作为一个组,并将它们聚合到一个结构中。然后将该结构的实例作为参数传递给该方法。因此,您可能有 3 或 4 个参数,而不是 11 个参数。这不仅有助于解决您遇到的模拟库问题,还可以提高您的类的可用性,因为具有这么多参数的方法通常很难在呼叫站点。

于 2013-03-21T04:22:06.693 回答
1

如果有人需要更多 gmock 参数,这里是一个仅标题扩展:gmock-more-args

于 2017-10-12T16:54:25.133 回答
1

您尝试模拟的方法是纯虚拟的。这是我在不更改现有代码的情况下所做的:

struct ParamsMoreThanTen
{
  Param_Type param_1;
  Param_Type param_N;
};

MOCK_METHOD1(methodWithMoreThanTenParms, methodReturnType(ParamsMoreThanTen params));

methodReturnType methodWithMoreThanTenParms(
    Param_Type param_1,
    Param_Type param_N) override
{

  return    methodWithMoreThanTenParms(ParamsMoreThanTen
  {
    Param_Type param_1,
    Param_Type param_N
  });

};
于 2019-04-18T15:33:03.640 回答