ホームページ > Java > &#&チュートリアル > JUnit テストで例外処理をアサートするにはどうすればよいですか?

JUnit テストで例外処理をアサートするにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-04 07:54:35
オリジナル
442 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート