Java: JUnit 例外が発生することを確認するテストの書き方の変遷
はじめに
JUnitでは、バージョンによってテストの書き方が異なります。
この記事では、例外が発生することを確認するテストの書き方を比較します。
JUnit 3
failメソッドが呼ばれるとテストに失敗するという仕様を利用します。
下記のサンプルコードの場合、getメソッド内でIndexOutOfBoundsExceptionが発生した場合は、catch句に入り、failメソッドは呼ばれません。このため、テストに成功するという仕組みになっています。
JUnit 4/5でもこの書き方は可能ですが、後述の書き方のほうが読みやすいでしょう。
public void testOutOfBounds() {
try {
List<Object> it = new ArrayList<>();
it.get(1);
fail();
} catch (IndexOutOfBoundsException e) {
}
}
JUnit 4
@Test アノテーションのexpected値を利用します。
@Test(expected = IndexOutOfBoundsException.class)
public void testOutOfBounds() {
List<Object> it = new ArrayList<>();
it.get(1);
}
JUnit 5
Assertions#assertThrowsを利用します。
JUnitの各assertメソッドでは、staticインポートを利用して、クラス名を省略するケースが多いです。
import static org.junit.jupiter.api.Assertions.assertThrows;
@Test
void testOutOfBounds() {
List<Object> it = new ArrayList<>();
assertThrows(IndexOutOfBoundsException.class, () -> it.get(1));
}
Author And Source
この問題について(Java: JUnit 例外が発生することを確認するテストの書き方の変遷), 我々は、より多くの情報をここで見つけました https://qiita.com/flyaway/items/858fe506c85d7bdc48b3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .