GMOCK错误:不允许使用MOCK_METHOD11

GMOCK Error: Is MOCK_METHOD11 not allowed

本文关键字:MOCK METHOD11 错误 不允许 GMOCK      更新时间:2023-10-16

当我模拟一个有11个参数的函数时,它会给出一条错误消息:

错误:"function_name"不是类型

我正在使用

MOCK_METHOD11(function_name,int(param1,param2,....,param11);

是不是有11个参数的函数不能被嘲笑?

GMock最多支持10个(包括)模拟函数参数。因此,您不能将其用于开箱即用的功能。你可以做些什么来模拟这种方法:

  1. (首选)重构此方法以减少参数数量。如此多的参数使得该方法难以控制和理解。

  2. 引入中间代理接口,该接口将具有只接受10个参数的类似方法。这很容易实现:

    class OriginalInterface
    {
    public:
    virtual void method(int param1, int param2) = 0;
    };
    class ProxyInterface : public OriginalInterface
    {
    public:
    virtual void method(int param1, int param2)
    {
    method1(param1);
    method2(param2);
    }
    virtual void method1(int param1) = 0;
    virtual void method2(int param2) = 0;
    };
    // Now you mock on ProxyInterface
    class MockInterface : public ProxyInterface
    {
    public:
    MOCK_METHOD1(method1, void(int));
    MOCK_METHOD1(method2, void(int));
    };
    

在我的示例中,我将具有2个参数的方法拆分为2个方法。我认为这个想法很清楚。

3。(并非最佳)您可以尝试更改gmock源以添加METHOD11 typedefs。。