我正在使用 jmock 来模拟一个 OutputStream 并对写入它的数据设置期望。
所以我有一个看起来像这样的期望
oneOf(stream).write(byteArrayMatching("Some string"));
( byteArrayMatching
) 是自定义匹配器的工厂。
这一切都很好,除非测试失败,因为被测类写入了不正确的数据,我得到一个看起来像这样的错误:
java.lang.AssertionError: unexpected invocation: stream.write([<60>, <63>, ...])
通过查看字节序列很难确定数据到底出了什么问题(我还没有开始记住 ASCII)。这几乎迫使我在调试器中运行测试以找出问题所在。
我的问题是:有没有办法以某种方式注册各种格式化程序与模拟对象或模拟对象可以漂亮地打印参数值?很明显,jmock 已经在做一些漂亮的打印,因为上面不是 的输出byte[].toString()
,但是我在 API 文档中找不到任何建议定制这种漂亮打印逻辑的方法