Google Mock:如何配置自定义消息以解释匹配失败

时间:2013-03-11 21:35:34

标签: c++ googlemock

如果匹配失败,Google模拟会打印如下消息:

  

test.cpp:112:EXPECT_CALL(mock_obj,foo( MyMatcher bar )))...
  预期arg#0 :等于[1,2; 3,4]
  实际:{1}
  预期:被召唤一次   实际:从未调用 - 不满意和活跃

使用自定义匹配器 MyMatcher 我可以定义一个描述字符串,用于在匹配失败时生成失败消息。但它仅定义预期arg#0 部分消息。有什么方法可以自定义实际的打印方式吗?

在我的情况下,我不能重载运算符<<对于 bar 类,因为它已被第三方代码重载不在我的控制范围内(此库定义了 bar 的类和运算符<< for it)。

1 个答案:

答案 0 :(得分:6)

由于我 无法为我的operator定义<< class,因此Google测试可以选择为其定义PrintTo功能Teaching Google Test How to Print Your Values。感谢RA获取该链接。

  

用户可以通过在定义了Foo的命名空间中定义PrintTo()的重载来为类类型Foo覆盖此行为。我们为用户提供此选项,因为有时会定义&lt;&lt; Foo的运算符是不可取的(例如,编码风格可能会阻止这样做,或者已经存在&lt;&lt;&lt;运算符,但它不会执行用户想要的操作。)

void PrintTo(const Bar& value, ::std::ostream* os);