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

Google Mock: How to configure custom message to explain match failure

本文关键字:自定义消息 解释 失败 配置 Mock 何配置 Google      更新时间:2023-10-16

在匹配失败的情况下,Google模拟打印如下消息:

test.cpp: 112: EXPECT_CALL (mock_obj foo ( MyMatcher ( ) ))...
期望参数#0: = [1,2;3、4]
Actual: {1}
期望:被调用一次
实际:从未调用-不满意和活动

使用自定义matcher MyMatcher我能够定义一个描述字符串,用于在匹配失败时生成失败消息。但是它只定义了消息的预期参数#0部分。是否有任何方法我可以自定义如何实际打印?

在我的例子中,我不能重载operator<<对于类bar,因为它已经被第三方代码重载,不在我的控制之下(本库定义类bar和operator<<)。

由于我能够为我的class定义operator <<,谷歌测试可以选择为它定义PrintTo函数,教谷歌测试如何打印您的值。感谢RA提供的链接。

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

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