关于java:为什么JUnit Testing异常总是失败?

Why JUnit Testing exception always fail?

本问题已经有最佳答案,请猛点这里访问。

我用的是JUnit 4.11。

Eclipse版本:Luna Service Release 2(4.4.2)

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 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以满足测试。根据是否选中,您可能需要在方法上使用throws子句。