所以我一直在使用ExpectedException来预测抛出异常的type
,message
,cause
甚至matcher
。
但为什么没有一种实用工具方法可以简单地期望一个异常对象呢?当然,我最好测试对象平等(假设我知道我在做什么),而不是测试它的所有个别属性?毕竟,如果method A
只是抛出了其委托人method B
抛出的任何异常(method A
调用method B
),那么我会更容易模仿{{1}抛出异常,说method B
并检查我的Exception A
测试方法中抛出的确切对象?
那为什么不提供这样的实用方法呢?
当然,我可以在我的测试中包含method A
调用并捕获异常来测试对象,但method A
s,type
和{{{ 1}}也是 - 我想目标是让测试代码看起来更像是没有try / catch块。
答案 0 :(得分:4)
只需使用ExpectedException#expect(Matcher)
并提供检查引用或对象相等性的Matcher
。您可以使用org.hamcrest.core.Is#is(Object)
,传入它将抛出的确切Exception
实例(如果您可以控制的话)。