Multiple expected exceptions in JUnit
该应用程序在someMethod()中抛出两个不同的异常。 我想通过JUnit测试它。
我可以使用ExpectedException和@Rule来预留应用程序应该抛出的"自然"异常。
你如何断言在JUnit 4测试中抛出某个异常? 正在解释这个。
我怎么能这样做 - 2个或更多"自然"例外? ExpectedException没有包含多个预期的异常。
还有其他方法可以做到这一点 - 如在JUnit 4测试中如何断言某个异常被解释中所解释的那样? 再次。 我想知道是否有办法做到这一点
通过使用JUnit的内置功能。
单个测试方法只能退出一次,因此只能抛出一个异常。 如果您希望确认您的代码可能以两种不同的方式失败,那么您有两个单独的测试; 将其拆分为两个测试方法,并在每个方法上声明特定的异常。
我发现这种方式是因为JUnit函数只接受一个异常。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | @Test public void checkRuleValidation() { Rule rule = generateRules(1,"rule.json").get(0); // rule name validation rule.setRuleName(null); try { ruleResource.saveRule(rule); // expecting exception if no assert false assertTrue(false); } catch (BadRequestException br) { assertTrue(true); } //validating rule action rule.setRuleAction(null); try { ruleResource.saveRule(rule); // expecting exception if no assert false assertTrue(false); } catch (AuthorizationException br) { assertTrue(true); } } |
您可以使用ErrorCollector收集多个异常,并在测试结束时验证它们。 但是您必须手动将异常添加到收集器,因为JUnit只看到您的测试方法,并且在方法执行期间无法执行任何操作。