JUNIT - Asserting Exceptions
本问题已经有最佳答案,请猛点这里访问。
我正在使用JUnit 4。我试图使用下面的代码断言异常,但它没有起作用。
1 2 3 | @Rule public ExpectedException thrown = ExpectedException.none(); thrown.expect(ApplicationException.class); |
但是,当我使用下面的注释时,它工作并通过了测试。
1 |
如果我错过了什么,请告诉我。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import org.junit.Rule; import org.junit.rules.ExpectedException; public class Test { @Rule public ExpectedException exception = ExpectedException.none(); @org.junit.Test public void throwsIllegalArgumentExceptionIfIconIsNull() { exception.expect(IllegalArgumentException.class); toTest(); } private void toTest() { throw new IllegalArgumentException(); } } |
另一种方法(更简单?)使用规则的方法是在调用之后放置一个fail(),您希望在调用中出现异常。如果得到异常,测试方法就会成功(永远不会失败)。如果您没有得到异常,并且到达fail()语句,那么测试将失败。
下面的代码是使用异常规则的最小示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class Test { @Rule public ExpectedException exception = ExpectedException.none(); @org.junit.Test public void throwsIllegalArgumentExceptionIfIconIsNull() { exception.expect(IllegalArgumentException.class); toTest(); } private void toTest() { throw new IllegalArgumentException(); } } |
另请参见(关于规则的wiki条目)