S-JIS[2017-09-16/2022-11-11] 変更履歴

JUnit5 事前条件の記述

JUnit5の事前条件の記述例。


概要

JUnit5(Jupiter)ではassumeTrueやassumingThatメソッド等を使って事前条件を記述する。

assertEquals等のassert系メソッドはテストの実行結果を確認する為に使うのに対し、
assume系メソッドはテストの事前条件を確認するのに使う。
(例えばWindows環境でしか実行できないテストを行う場合、事前条件でWindowsかどうかを確認する)

assumeのチェックに失敗すると、それより後の処理は実行されないが、assertとは違い、テスト失敗にはならない。(スキップ扱いになる)


assume系メソッドはAssumptionsクラスのstaticメソッドとして定義されているので、staticインポートしておくと便利。

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

assumeTrue

assumeTrueは、条件を満たしていたら後続処理を続行する。
条件外だったら後続処理は実行しない。(スキップする)

	@Test
	void assume1() {
		assumeTrue(System.getProperty("os.name").contains("Windows"));

		System.out.println("assume1");
		assertEquals(";", File.pathSeparator);
	}

同様のメソッドにassumeFalse()もある。[2022-11-11]


assumingThat

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

TestAbortedExceptionをスローするとテストをスキップする。[2022-11-11]

import org.opentest4j.TestAbortedException;
	@Test
	void skip() {
		throw new TestAbortedException("skip example");
	}

assumeTrue()/assumeFalse()も内部ではTestAbortedExceptionをスローしている。

@Disabledアノテーション


JUnit5へ戻る / JUnitへ戻る / Javaへ戻る / 技術メモへ戻る
メールの送信先:ひしだま