4

应用程序在一些 thatMethod() 中抛出了 2 个不同的异常。我希望通过 JUnit 对其进行测试。

我可以使用ExpectedException@Rule留出应用程序预期抛出的“自然”异常。 您如何断言在 JUnit 4 测试中引发了某个异常?正在解释这一点。

在我的情况下,我该怎么做 - 2个或更多“自然”例外? ExpectedException没有持有多个预期异常。

还有其他方法可以做到这一点——正如你如何断言在 JUnit 4 测试中引发了某个异常?再次。我想知道是否有办法通过使用 JUnit 的内置功能来做到这一点。

4

3 回答 3

3

单个测试方法只能退出一次,因此只能抛出一个异常。如果您想确认您的代码可能以两种不同的方式失败,那么您有两个单独的测试;将其拆分为两个测试方法,并在每个测试方法上声明特定的异常。

于 2013-11-26T10:45:04.177 回答
1

您可以使用ErrorCollector收集多个异常并在测试结束时对其进行验证。但是您必须手动将异常添加到收集器,因为 JUnit 只能看到您的测试方法,并且在方法执行期间不能做任何事情。

于 2013-11-22T08:14:36.307 回答
1

我发现这种方式是因为 JUnit 函数只接受一个异常。

@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);
    }
}
于 2016-11-18T12:06:47.067 回答