代码之家  ›  专栏  ›  技术社区  ›  JayTie_Howi

GMock EXPECT\u调用不匹配任何匹配器

  •  2
  • JayTie_Howi  · 技术社区  · 7 年前

    代码:

    class MockDefault : public Verifyingcalls::DefaultSCI_OCB {
        public:
        MOCK_METHOD0(op, void());
        MOCK_METHOD1(op1, void(sc_integer param1));
        MOCK_METHOD2(op2, void(sc_boolean param1, sc_integer param2));
    };
    
    TEST_F(VerifyCallCount, after3Cycle) {
        MockDefault defaultMock;
    
        EXPECT_CALL(defaultMock, op1(_)).Times(AtLeast(4));
    
        EXPECT_CALL(defaultMock, op2(_,_)).Times(AtLeast(4));
    
        EXPECT_CALL(defaultMock, op1(5l)).Times(AtLeast(2));
    
        EXPECT_CALL(defaultMock, op1(7l)).Times(AtLeast(2));
    
        EXPECT_CALL(defaultMock, op2(true, 7l)).Times(AtLeast(2));
    
        EXPECT_CALL(defaultMock, op2(true, 5l)).Times(AtLeast(2));
    ...
    }
    

    我在运行此测试时遇到问题或至少出现意外行为: EXPECT_CALL's 测试很好,但如果我不这样做,我就会失败:

    错误:

    Actual function call count doesn't match EXPECT_CALL(defaultMock, op2(_,_))...
             Expected: to be called at least 4 times
               Actual: never called - unsatisfied and active
    ..\gtests\VerifyCallCount\VerifyCallCount.cc:123: Failure
    

    我的问题是,为什么测试失败? 我假设函数 op1 被调用了至少4次,参数5被调用了至少两次,参数7被调用了两次。那么为什么测试失败了呢?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Tobias Wollgam    7 年前

    我认为在这种情况下

    EXPECT_CALL(defaultMock, op2(true, 7l)).Times(AtLeast(2));
    EXPECT_CALL(defaultMock, op2(true, 5l)).Times(AtLeast(2));
    

    EXPECT_CALL(defaultMock, op2(_,_)).Times(AtLeast(4));
    

    不叫,因为另外两个匹配。具有 gmock EXPECT_CALL