JUnit5ã使ã£ã¦ãJavaã®åä½ãã¹ããããæ¹æ³ãæ¸ãã¦ããã¾ããJUnit5ã®ã¢ããã¼ã·ã§ã³ã®å½¹å²ãè¨è¼ãã¦ãã¾ãã
ãã¼ã¸ã§ã³
åä½ç¢ºèªã§ä½¿ç¨ãã製åã®ãã¼ã¸ã§ã³ã¯ä»¥ä¸ã®éãã§ãã
ç®æ¬¡
- ãã«ããã¡ã¤ã«ã®ä½æ
- ãã¹ãã¯ã©ã¹ã®ä½æ
- ãã¹ã対象ã®ä½æ
- ãã¹ãã®å®è¡
- JUnit5ã®ã¢ããã¼ã·ã§ã³ã«ã¤ãã¦
1. ãã«ããã¡ã¤ã«ã®ä½æ
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ã®ãã¹ããå®è¡ãã¦ãããªããã¨ãããã¾ããä¸ã®ããã«ãæ°ãããã¼ã¸ã§ã³ãæå®ããã®ãè¯ãããã§ãã
2. ãã¹ãã¯ã©ã¹ã®ä½æ
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 { private final Calc calc = new Calc(); @Test void testAdd() { // å®è¡ int result = calc.add(1, 2); // æ¤è¨¼ assertEquals(3, result); } }
3. ãã¹ã対象ã®ä½æ
ãã¹ã対象ã®ã¯ã©ã¹ã¯ä»¥ä¸ã®éãã§ãã
src/main/java/org/example/Calc.java
package org.example; public class Calc { public int add(int x, int y) { return x + y; } }
4. ãã¹ãã®å®è¡
IDEã§ãã¹ãã¯ã©ã¹ãå®è¡ããããããã¸ã§ã¯ãã®ã«ã¼ããã£ã¬ã¯ããªã§ä»¥ä¸ã®ã³ãã³ããå®è¡ãã¾ãã
mvn test
5. JUnit5ã®ã¢ããã¼ã·ã§ã³ã«ã¤ãã¦
JUnit5ã®ã¢ããã¼ã·ã§ã³ã«ã¤ãã¦ãä¸é¨ã«ãªãã¾ãã解説ãè¨è¼ãã¾ãã
5.1. æ¦è¦
以ä¸ã®ã¢ããã¼ã·ã§ã³ã¯ãã¡ã½ããã«ä»ä¸ãã¾ãã
| ã¢ããã¼ã·ã§ã³ | 解説 |
|---|---|
| @Test | ãã¹ã対象ã«ãªãã¾ãã |
| @BeforeEach | åãã¹ããå®è¡ãããåã«å¼ã³åºããã¾ãã |
| @AfterEach | åãã¹ããå®è¡ãããå¾ã«å¼ã³åºããã¾ãã |
| @BeforeAll | å ¨ã¦ã®ãã¹ããå®è¡ãããåã«å¼ã³åºããã¾ãã |
| @AfterAll | å ¨ã¦ã®ãã¹ããå®è¡ãããå¾ã«å¼ã³åºããã¾ãã |
@BeforeAll 㨠@AfterAll ã®ã¡ã½ãã㯠static ã«ãã¾ãã
5.2. 使ç¨ä¾
ã¢ããã¼ã·ã§ã³ã®ä½¿ç¨ä¾ã¯ä»¥ä¸ã®éãã§ãã
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 { // å ¨ã¦ã®ãã¹ããå®è¡ãããåã«å®è¡ @BeforeAll static void beforeAll() { System.out.println("beforeAll"); } // å ¨ã¦ã®ãã¹ããå®è¡ãããå¾ã«å®è¡ @AfterAll static void afterAll() { System.out.println("afterAll"); } // åãã¹ããå®è¡ãããåã«å®è¡ @BeforeEach void beforeEach() { System.out.println("beforeEach"); } // åãã¹ããå®è¡ãããå¾ã«å®è¡ @AfterEach void afterEach() { System.out.println("afterEach"); } // ãã¹ãï¼ @Test void testOne() { System.out.println("test1"); } // ãã¹ãï¼ @Test void testTwo() { System.out.println("test2"); } }
5.3. å®è¡çµæ
ä¸ã®ãã¹ãã¯ã©ã¹ãå®è¡ããã¨ã以ä¸ã®ããã«åºåããã¾ãã
beforeAll beforeEach test1 afterEach beforeEach test2 afterEach afterAll