Java中测试异常的多种方式(2)

发表于:2014-04-14来源:博客园作者:黄博文点击数: 标签:软件测试
这是最容易想到的一种方式,但是太啰嗦。 JUnit annotation方式 JUnit中提供了一个expected的annotation来检查异常。 1 2 3 4 5 6 @Test ( expected = IllegalArgumentException

  这是最容易想到的一种方式,但是太啰嗦。

  JUnit annotation方式

  JUnit中提供了一个expected的annotation来检查异常。

1
2
3
4
5
6
    @Test(expected = IllegalArgumentException.class)
    public void shouldGetExceptionWhenAgeLessThan0() {
        Person person = new Person();
        person.setAge(-1);

    }

  这种方式看起来要简洁多了,但是无法检查异常中的消息。

  ExpectedException rule

  JUnit7以后提供了一个叫做ExpectedException的Rule来实现对异常的测试。

1
2
3
4
5
6
7
8
9
10
11
12
    @Rule
    public ExpectedException exception = ExpectedException.none();

    @Test
    public void shouldGetExceptionWhenAgeLessThan0() {

        Person person = new Person();
        exception.expect(IllegalArgumentException.class);
        exception.expectMessage(containsString("age is invalid"));
        person.setAge(-1);

    }

  这种方式既可以检查异常类型,也可以验证异常中的消息。

  使用catch-exception库

  有个catch-exception库也可以实现对异常的测试。

  首先引用该库。

  pom.xml

1
2
3
4
5
6
        <dependency>
            <groupId>com.googlecode.catch-exception</groupId>
            <artifactId>catch-exception</artifactId>
            <version>1.2.0</version>
            <scope>test</scope> <!-- test scope to use it only in tests -->
        </dependency>

原文转自:http://www.cnblogs.com/huang0925/p/3663074.html