【发布时间】:2020-01-28 10:33:10
【问题描述】:
假设在一个测试中是:
@Rule
public ExpectedException thrown = ExpectedException.none();
一些测试包含:
thrown.expect(SomeNastyException.class);
现在如果需要更详细地检查这个SomeNastyException,该怎么做?
当然可以不使用ExcpectedException 并用 try/catch 包装调用,然后以任何需要的方式检查异常,但现在的问题是它是否可以完成与ExpectedException,类似:
assertEquals("42", thrown.getException().getUniversalAnswerToEverything());
【问题讨论】:
-
不简单;规则基本上就是为此而存在的语法糖。这是我强烈喜欢 Spock 而不是普通的 JUnit 的众多原因之一。
-
@chrylis-onstrike-,您可以期待 JUnit 中带有消息或原因的特定异常。通过使用
expect(Matcher<?>)覆盖。在这方面,Spock 比 JUnit 没有任何优势。
标签: java exception junit assert rules