在期望中自定义传入参数的格式

时间:2009-07-10 22:49:52

标签: java unit-testing jmock

我正在使用jmock来模拟OutputStream并设置对写入数据的期望。

所以我期待看起来像这样

oneOf(stream).write(byteArrayMatching("Some string"));

byteArrayMatching)是自定义匹配器的工厂。

这一切都运行正常,除非测试失败,因为测试中的类写错了数据,我得到一个错误,看起来像这样:

java.lang.AssertionError: unexpected invocation: stream.write([<60>, <63>, ...])

通过查看字节序列来确定数据的确切错误是非常困难的(我还没有记住ASCII)。这几乎迫使我在调试器中运行测试以找出错误。

我的问题是:有没有办法以某种方式使用模拟对象或可以打印参数值的Mockery对象注册各种格式化程序?很明显jmock已经做了一些漂亮的打印,因为上面的内容不是byte[].toString()的输出,但我在API文档中找不到任何可以提供定制这种漂亮打印逻辑的方法

2 个答案:

答案 0 :(得分:0)

目前无法在当前(2.5.1)jMock库中执行此操作。我建议你log an enhancement到jMock。

答案 1 :(得分:0)

可爱的答案是,模拟对于您定义的类型更有意义,它具有一些域结构,而不是外部API。

下一个答案是查看新版本的Hamcrest,其中包括支持报告不匹配的内容。

下一个答案,除非涉及到序列,否则在这种情况下,最好使用内存中的字节流并在之后断言字符串。

并提出问题,请:)