首页 >Java >java教程 >如何在 JUnit 测试中断言异常处理?

如何在 JUnit 测试中断言异常处理?

Susan Sarandon
Susan Sarandon原创
2025-01-04 07:54:35459浏览

How Do I Assert Exception Handling in JUnit Tests?

在 JUnit 测试中断言异常处理

在 JUnit 中,测试应抛出异常的代码需要干净简洁的方法。虽然可以手动检查异常,但这不是惯用的方式。

JUnit 5 和 4.13

在 JUnit 版本 5 和 4.13 中,您可以使用 @Test(expected = ExceptionClass.class) 注释关于测试方法。这期望抛出指定的异常。

示例:

@Test(expected = IndexOutOfBoundsException.class)
public void testIndexOutOfBoundsException() {
    ArrayList emptyList = new ArrayList();
    emptyList.get(0);
}

AssertJ 和 Google-Truth

如果使用 AssertJ 或 Google-Truth 等库,您可以使用他们的断言需要验证

AssertJ:

import static org.assertj.core.api.Assertions.assertThatThrownBy;

@Test
public void testFooThrowsIndexOutOfBoundsException() {
    assertThatThrownBy(() -> foo.doStuff()).isInstanceOf(IndexOutOfBoundsException.class);
}

Google-Truth:

import static com.google.common.truth.Truth.assertThat;

@Test
public void testFooThrowsIndexOutOfBoundsException() {
    assertThat(assertThrows(IndexOutOfBoundsException.class, foo::doStuff)).isNotNull();
}

JUnit

在 JUnit 版本小于或等于4.12,可以使用Rule或TryCatch来处理异常。

使用Rule:

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

@Test
public void testIndexOutOfBoundsException() {
    thrown.expect(IndexOutOfBoundsException.class);
    ArrayList emptyList = new ArrayList();
    emptyList.get(0);
}

使用TryCatch:

import static org.junit.Assert.assertEquals;

@Test
public void testIndexOutOfBoundsException() {
    try {
        ArrayList emptyList = new ArrayList();
        emptyList.get(0);
        fail("IndexOutOfBoundsException was expected");
    } catch (IndexOutOfBoundsException e) {
        assertEquals(e.getClass(), IndexOutOfBoundsException.class);
    }
}

以上是如何在 JUnit 测试中断言异常处理?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn