首页 > 解决方案 > 断言抛出异常

问题描述

我的项目中有这个 Junit 测试

public class CalculatorBookingTest {

    private CalculatorBooking calculatorBooking;

    @Rule
    public ExpectedException expectedException = ExpectedException.none();

    @Before
    public void setUp() {
        calculatorBooking = new CalculatorBooking();
    }

    @Test
    public void shouldThrowAnException_When_InputIsNull() {
        calculatorBooking.calculate(null, null, 0, null);
        expectedException.expect(CalculationEngineException.class);
        expectedException.expectMessage("Error");
    }

}

但是当我运行测试时,抛出异常但测试失败

标签: javaunit-testingtestingjunitjunit4

解决方案


您可以执行以下操作:

@Test(expected = CalculationEngineException.class)
public void shouldThrowAnException_When_InputIsNull() {
    calculatorBooking.calculate(null, null, 0, null);
}

来自 Junit文档

Test 注解支持两个可选参数。第一个是预期的,声明一个测试方法应该抛出一个异常。如果它没有抛出异常,或者它抛出的异常与声明的异常不同,则测试失败。


推荐阅读