如果匹配失败,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)。
答案 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);