JUnit5を使用してテストを実施する。JUnitを導入することのメリットは何度でも同じテストが可能なこと

プログラムの共通部を修正した時、影響がある可能性のある場所を全てテストしなおすのってめんどうくさいですよね。

JUnitを使ってテストコードを書いておけば何度でも同じテストを行えるのでテスト効率が飛躍的によくなります。

また、テストを全て簡単にやりなおせるためデグレード対策にもなりますね。

今回はJUnit5を使ってテストを実施していきます。

JUnit5を使用してテストを実施

今回使用した環境

インターネット接続可能のオンラインの環境

64 ビット オペレーティング システム

Windows 10 22H2

JAVA 8

JUnit 5.9.2

テスト対象クラス

まずはテスト対象のクラスを作成します。

// 秀吉クラス
public class Hideyoshi {

	// 名前を取得
	public String getNamae() {
		return "豊臣秀吉";
	}

	// 出生を取得
	public int getShusshou() {
		return 1537;
	}

	// 政策を取得
	public String getSeisaku() {
		return "刀狩令";
	}
}

pom.xml

Mavenプロジェクトなのでpom.xmlにJUnit5の定義を記載します。

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-api</artifactId>
  <version>5.9.2</version>
  <scope>test</scope>
</dependency>

テストクラスの作成

テストクラスを作成します。

@Testが付いているテストメソッド内にて検証用メソッドのAssertions.assertEqualsを使用します。

Assertions.assertEqualsのメソッドでテストの期待値、実績値を比較して一致すればテスト結果が問題なしとなります。

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

class HideyoshiTest {
	
	@BeforeAll
	static void setUpBeforeClass() throws Exception {
		System.out.println("BeforeAll");
	}

	@AfterAll
	static void tearDownAfterClass() throws Exception {
		System.out.println("AfterAll");
	}

	@BeforeEach
	void setUp() throws Exception {
		System.out.println("BeforeEach");
	}

	@AfterEach
	void tearDown() throws Exception {
		System.out.println("AfterEach");
	}

	@Test
	void testGetNamae() {
		System.out.println("testGetNamae");
		Hideyoshi hideyoshi = new Hideyoshi();
		Assertions.assertEquals("豊臣秀吉", hideyoshi.getNamae());
	}

	@Test
	void testGetShusshou() {
		System.out.println("testGetShusshou");
		Hideyoshi hideyoshi = new Hideyoshi();
		Assertions.assertEquals(1537, hideyoshi.getShusshou());
	}

	@Test
	void testGetSeisaku() {
		System.out.println("testGetSeisaku");
		Hideyoshi hideyoshi = new Hideyoshi();
		Assertions.assertEquals("刀狩令", hideyoshi.getSeisaku());
	}
}

テストの実行

プロジェクトで右クリック、「実行」-「JUnitテスト」をクリックすることでテストクラスが実行できます。

以下は実行後の画面です。@Testアノテーションが付いている3つのメソッドが実行され、テストが問題なく行われました。

ちなみにコンソールは以下のようになります。

@BeforeAll, @AfterAllのメソッドはテストクラスの実行時の最初と最後だけに1度ずつ実行されます。

@BeforeEach, @AfterEachのメソッドは各@Testメソッドの前後で毎回実行されます。

つまり@Testのメソッドは3つあるので@BeforeEach, @AfterEachのメソッドは各3回ずつ実行されることになります。

以上となります。

ここまでお読みいただきありがとうございました。

Java

Posted by だゆう