GoogleTest之EXPECT_CALL和ONCALL的用法

目录

  • EXPECT_CALL

EXPECT_CALL

EXPECT_CALL(mock_object,method_name(matchers...)) 创建一个mock对象mock_object,这个对象有一个名为method_name的方法,方法的参数为matchers…。
EXPECT_CALL必须在任何mock对象之前使用。
以下方法的调用,必须按以下顺序进行:

EXPECT_CALL(mock_object, method_name(matchers...))
    .With(multi_argument_matcher)  // Can be used at most once
    .Times(cardinality)            // Can be used at most once
    .InSequence(sequences...)      // Can be used any number of times
    .After(expectations...)        // Can be used any number of times
    .WillOnce(action)              // Can be used any number of times
    .WillRepeatedly(action)        // Can be used at most once
    .RetiresOnSaturation();        // Can be used at most once

详细说明:

  • With(multi_argument_matcher)
  • Times(cardinality):mock函数期望被调用的次数
    • cardinality参数为以下值:
      • AnyNumber():任意次
      • AtLeast(n):至少n次
      • AtMost(n):至多n次
      • Between(m, n):m到n次之间
      • Exactly(n) or n:n次,如果n为0则不被调用
    • 如果Times没有调用,GoogleTest的处理规则如下:
      • WillOnce和WillRepeatedly都没有指定,默认调用Times(1)
      • 如果有n次WillOnce()但没有WillRepeatedly(),n>=1,cardinality为Times(n)
      • 如果有n次WillOnce()和一次WillRepeatedly(),n>=0,cardinality为AtLeast(n)
    • Times 最多只能被调用一次
  • InSequence
  • WillRepeatedly(action):指定mock函数的实际行为。在WillOnce之后生效。

你可能感兴趣的:(GoogleTest,c++,单元测试,测试工具,功能测试)