我正在使用gmock模拟遗留代码中的依赖项。其中一个类有一个带有11个参数的方法。当我尝试使用MOCK_METHOD11_WITH_CALLTYPE模拟它时,我发现这个宏并不存在。gmock最多只能支持10个参数。你对此有什么建议?我用虚拟主体实现这个方法吗?或者复制并扩展宏?谢谢!
另外,我现在不需要在我的测试中模拟这个方法,但将来可能需要这样做。
诚挚的问候,
发布于 2013-03-21 12:22:07
具有超过10个参数的方法可能是麻烦的迹象。我可以建议一个解决方法,它将帮助您的特定情况,但这也可能是一个好主意,而不是模仿。将几个有意义的参数作为一个组,并将它们聚合到一个结构中。然后将该结构的实例作为参数传递给该方法。因此,您可能会有3或4个参数,而不是11个参数。这不仅有助于解决您遇到的模拟库问题,还可以提高类的可用性,因为具有如此多参数的方法通常很难在调用点读取。
发布于 2017-10-13 00:54:25
如果有人需要更多的gmock参数,这里有一个仅用于头的扩展:gmock-more-args
发布于 2019-04-18 23:33:04
您试图模拟的方法是纯虚拟的。以下是我在不更改现有代码的情况下所做的工作:
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
  });
};https://stackoverflow.com/questions/15539169
复制相似问题