关于java:如何使用JUnit Test注释断言IOException消息?

How do I assert an IOException message with JUnit Test annotation?

当我使用@Rule和ExpectedException时,如下面的第1个(改编后的帖子)所示,我在(*)的Class2testTest类中得到错误"Unhandled Exception type"。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package class2test;

import java.io.IOException;

public class Class2test {
    public Class2test() throws IOException{
        throw new IOException("j");
    }
}

package test;

import java.io.IOException;

import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

import class2test.Class2test;

public class Class2testTest {

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

    @Test
    public void test() {
        expectedEx.expect(IOException.class);
        expectedEx.expectMessage("j");
        new Class2test(); //(*)
    }

}

我不明白这一点:改编的帖子是可重现的(使用RuntimeException而不是IOException它可以工作)。


您应该在方法的签名中指定抛出的异常:

1
public void test() throws Exception {