5

如果匹配失败,谷歌模拟打印如下消息:

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

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

在我的情况下,我不能为bar类重载 operator<<,因为它已经被第三方代码重载不在我的控制之下(这个库定义了bar类和 operator<< )。

4

1 回答 1

9

由于我无法operator <<class的 google 测试定义功能,因此可以选择为其定义PrintTo功能教 Google 测试如何打印您的值。感谢RA的链接。

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

void PrintTo(const Bar& value, ::std::ostream* os);
于 2013-03-13T10:03:03.993 回答