JUnit5を使って、Javaの単体テストをする方法を書いていきます。JUnit5のアノテーションの役割も記載しています。
動作確認で使用した製品のバージョンは以下の通りです。
Mavenのビルドファイルを作成して、JUnitへの依存関係を追加します。
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>junit5-test</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.junit</groupId> <artifactId>junit-bom</artifactId> <version>5.9.2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M8</version> </plugin> </plugins> </build></project>
maven-surefire-pluginが古いと、JUnit5のテストを実行してくれないことがあります。上のように、新しいバージョンを指定するのが良さそうです。
Calcクラスのテストを行うコードを作成します。
src/test/java/org/example/CalcTest.java
package org.example;import static org.junit.jupiter.api.Assertions.assertEquals;import org.junit.jupiter.api.Test;class CalcTest {privatefinal Calc calc =new Calc();@Testvoid testAdd() {// 実行int result = calc.add(1,2);// 検証 assertEquals(3, result); }}
テスト対象のクラスは以下の通りです。
src/main/java/org/example/Calc.java
package org.example;publicclass Calc {publicint add(int x,int y) {return x + y; }}
IDEでテストクラスを実行するか、プロジェクトのルートディレクトリで以下のコマンドを実行します。
mvn test
JUnit5のアノテーションについて、一部になりますが解説を記載します。
以下のアノテーションは、メソッドに付与します。
| アノテーション | 解説 |
|---|---|
| @Test | テスト対象になります。 |
| @BeforeEach | 各テストが実行される前に呼び出されます。 |
| @AfterEach | 各テストが実行された後に呼び出されます。 |
| @BeforeAll | 全てのテストが実行される前に呼び出されます。 |
| @AfterAll | 全てのテストが実行された後に呼び出されます。 |
@BeforeAll と @AfterAll のメソッドは static にします。
アノテーションの使用例は以下の通りです。
src/test/java/org/example/ExampleTest.java
package org.example;import org.junit.jupiter.api.AfterAll;import org.junit.jupiter.api.AfterEach;import org.junit.jupiter.api.BeforeAll;import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.Test;class ExampleTest {// 全てのテストが実行される前に実行@BeforeAllstaticvoid beforeAll() { System.out.println("beforeAll"); }// 全てのテストが実行された後に実行@AfterAllstaticvoid afterAll() { System.out.println("afterAll"); }// 各テストが実行される前に実行@BeforeEachvoid beforeEach() { System.out.println("beforeEach"); }// 各テストが実行された後に実行@AfterEachvoid afterEach() { System.out.println("afterEach"); }// テスト1@Testvoid testOne() { System.out.println("test1"); }// テスト2@Testvoid testTwo() { System.out.println("test2"); }}
上のテストクラスを実行すると、以下のように出力されます。
beforeAllbeforeEachtest1afterEachbeforeEachtest2afterEachafterAll
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。