S-JIS[2017-09-16/2022-11-11] 変更履歴
JUnit5の事前条件の記述例。
|
|
JUnit5(Jupiter)ではassumeTrueやassumingThatメソッド等を使って事前条件を記述する。
assertEquals等のassert系メソッドはテストの実行結果を確認する為に使うのに対し、
assume系メソッドはテストの事前条件を確認するのに使う。
(例えばWindows環境でしか実行できないテストを行う場合、事前条件でWindowsかどうかを確認する)
assumeのチェックに失敗すると、それより後の処理は実行されないが、assertとは違い、テスト失敗にはならない。(スキップ扱いになる)
assume系メソッドはAssumptionsクラスのstaticメソッドとして定義されているので、staticインポートしておくと便利。
import static org.junit.jupiter.api.Assumptions.*;
assumeTrueは、条件を満たしていたら後続処理を続行する。
条件外だったら後続処理は実行しない。(スキップする)
@Test void assume1() { assumeTrue(System.getProperty("os.name").contains("Windows")); System.out.println("assume1"); assertEquals(";", File.pathSeparator); }
同様のメソッドにassumeFalse()もある。[2022-11-11]
assumingThatは、条件を満たしている場合だけ第2引数の処理を実行する。
条件を満たしていてもいなくても、後続処理は実行される。(第2引数のテストが失敗したら、その時点で終了するが)
@Test void assume2() { assumingThat(System.getProperty("os.name").contains("Windows"), () -> { System.out.println("assume2-1"); assertEquals(";", File.pathSeparator); }); System.out.println("assume2-2"); assertTrue(System.lineSeparator().contains("\n")); }
TestAbortedExceptionをスローするとテストをスキップする。[2022-11-11]
import org.opentest4j.TestAbortedException;
@Test void skip() { throw new TestAbortedException("skip example"); }
assumeTrue()/assumeFalse()も内部ではTestAbortedExceptionをスローしている。