为什么 JUnit 测试异常总是失败?

Why JUnit Testing exception always fail?

我正在使用 JUnit 4.11。

Eclipse 版本:Luna 服务版本 2 (4.4.2)

我需要做异常测试。代码可能是这样的:

// src code
public void myMethod throws MyException {
    ...
    throw new MyException(msg);
    ...
}

// test code
@Test (expected = MyException.class)
public void testMyMethod() {
    try {
        myMethod();
        fail();
    } catch (MyException e) {
        assertEquals(expectedStr, e.getMessage());
    }
}

但是测试总是失败,我哪里错了?

当您向 Test 注释提供 expected 异常时,仅当从测试方法中抛出预期的异常时,测试才会成功。但是,您会在异常传播出方法之前捕获它。

看来你也想测试异常消息,所以重新throw异常e以满足测试。根据是否选中,您可能需要在方法上使用 throws 子句。