Junit ExpectedException:期望一个确切的 Exception 对象

mys*_*cks 2 java junit unit-testing

所以我一直在使用ExpectedException来预期抛出异常的types、messages、causes 甚至matchers。

但是为什么没有一个实用方法来简单地完全期望一个异常对象呢?当然,我最好测试对象相等性(假设我知道我在做什么)而不是测试它的所有单个属性?毕竟,如果 amethod A仅仅抛出它的委托人method B抛出(method A调用method B)的任何异常,那么我模拟method B抛出异常会容易得多,比如说Exception A并检查我method A的测试方法中抛出的确切对象?

那么为什么不提供这样的实用方法呢?

当然,我可以method A在我的测试中包装我的调用并捕获异常来测试对象,但同样可以说types、messages 和causes - 我想目标是使测试代码看起来更具可读性它没有 try/catch 块。

Sot*_*lis 5

只需使用ExpectedException#expect(Matcher)并提供Matcher检查引用或对象相等性的 。您可以使用org.hamcrest.core.Is#is(Object), 传入Exception它将抛出的确切实例(如果这是您可以控制的)。