ホームページ  >  記事  >  Java  >  単体テストを使用して Java 例外処理をテストするにはどうすればよいですか?

単体テストを使用して Java 例外処理をテストするにはどうすればよいですか?

WBOY
WBOYオリジナル
2024-04-12 10:36:02598ブラウズ

Java で例外処理をテストする場合、いくつかのメソッドを使用できます。例外がスローされたことをアサートする (assertThrows() を使用)、例外を予期する (expected() を使用)、および例外メッセージを検証する (assertThat() を使用)。 。これらの方法を通じて、例外処理を完全にテストして、コードの正確さと信頼性を確認できます。たとえば、ユーザー名が null の場合にスローされる例外をテストするには、assertThrows() メソッドを使用して、期待どおりに動作するかどうかを確認できます。

単体テストを使用して Java 例外処理をテストするにはどうすればよいですか?

単体テストを使用して Java 例外処理をテストする方法

単体テストは、コードの正確性と信頼性を確保するために重要です。これには、例外処理のテストが含まれます。 Java では、次のようなさまざまなメソッドを使用して例外処理をテストできます:

1. 例外がスローされたことをアサートする

assertThrows を使用できます。 ()呼び出し時にメソッドが特定の例外をスローすることをアサートするメソッド:

import static org.junit.jupiter.api.Assertions.*;

class UserService {
    public void deleteUser(String username) {
        if (username == null) {
            throw new IllegalArgumentException("Username cannot be null");
        }
    }
}

public class UserServiceTest {
    @Test
    public void deleteUser_whenUsernameIsNull_throwsIllegalArgumentException() {
        UserService userService = new UserService();
        assertThrows(IllegalArgumentException.class, () -> userService.deleteUser(null));
    }
}

2. 予期される例外

expected を使用することもできます。 () 例外メッセージをカスタマイズするためのアノテーション:

import org.junit.jupiter.api.Test;

class UserService {
    public void deleteUser(String username) {
        if (username == null) {
            throw new IllegalArgumentException("Username cannot be null");
        }
    }
}

public class UserServiceTest {
    @Test(expected = IllegalArgumentException.class)
    public void deleteUser_whenUsernameIsNull_throwsIllegalArgumentException() {
        UserService userService = new UserService();
        userService.deleteUser(null);
    }
}

3. 例外メッセージの確認

スローされた例外に特定のメッセージがあることを確認するには、以下を使用できます。 assertThat()メソッド:

import org.hamcrest.CoreMatchers;
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;

import org.junit.jupiter.api.Test;

class UserService {
    public void deleteUser(String username) {
        if (username == null) {
            throw new IllegalArgumentException("Username cannot be null");
        }
    }
}

public class UserServiceTest {
    @Test
    public void deleteUser_whenUsernameIsNull_throwsIllegalArgumentExceptionWithMessage() {
        UserService userService = new UserService();
        try {
            userService.deleteUser(null);
            fail("Expected an IllegalArgumentException to be thrown");
        } catch (IllegalArgumentException e) {
            assertThat(e.getMessage(), is("Username cannot be null"));
        }
    }
}

実践例

たとえば、メソッド # を持つ UserService クラスについて考えてみましょう。 ##deleteUser () ユーザーを削除します。ユーザー名が null の場合にスローされる例外をテストするには、assert throwedException メソッドを使用できます。

import static org.junit.jupiter.api.Assertions.*;

class UserServiceTest {
    @Test
    public void deleteUser_whenUsernameIsNull_throwsIllegalArgumentException() {
        UserService userService = new UserService();
        assertThrows(IllegalArgumentException.class, () -> userService.deleteUser(null));
    }
}

これらのメソッドを使用すると、Java アプリケーションの側面における例外処理のさまざまな側面を包括的にテストできます。期待どおりに動作することを確認します。

以上が単体テストを使用して Java 例外処理をテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。