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回ずつ実行されることになります。
以上となります。
ここまでお読みいただきありがとうございました。