`mvn test`を使ってMavenで単体テストを実行することができます。いくつかの例:
# Run all the unit test classes. $ mvn test # Run a single test class. $ mvn -Dtest=TestApp1 test # Run multiple test classes. $ mvn -Dtest=TestApp1,TestApp2 test # Run a single test method from a test class. $ mvn -Dtest=TestApp1#methodname test # Run all test methods that match pattern 'testHello** ' from a test class. $ mvn -Dtest=TestApp1#testHello** test # Run all test methods match pattern 'testHello** ' and 'testMagic** ' from a test class. $ mvn -Dtest=TestApp1#testHello** +testMagic** test
デフォルトの `maven-surefire-plugin`は時代遅れです。パターンマッチングや単一のテストメソッドの実行など、新しい機能をサポートするために最新のものに更新してください。
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
</plugin>
</plugins>
</build>
1. Maven Javaプロジェクト
単純なJavaプロジェクトを見て、Mavenで単体テストクラスを実行する方法を確認してください。
1.1ディレクトリ構造。
1.2 Maven JUnit 5の例
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mkyong.examples</groupId>
<artifactId>maven-unit-test</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<properties>
<!-- https://maven.apache.org/general.html#encoding-warning -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- junit 5, unit test -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.3.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>maven-unit-test</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
</plugin>
</plugins>
</build>
</project>
1.3 2つのJavaクラス。後でユニットテストクラスを作成します。
MagicBuilder.java
package com.mkyong.examples;
public class MagicBuilder {
public static int getLucky() {
return 7;
}
}
MessageBuilder.java
package com.mkyong.examples;
public class MessageBuilder {
public static String getHelloWorld(){
return "hello world";
}
public static int getNumber10(){
return 10;
}
}
1.4 `MagicBuilder`のテストクラス
TestMagicBuilder.java
package com.mkyong.examples;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class TestMagicBuilder {
@Test
public void testLucky() {
assertEquals(7, MagicBuilder.getLucky());
}
}
1.5 `MessageBuilder`のテストクラス
pom.xml
package com.mkyong.examples;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class TestMessageBuilder {
@Test
public void testHelloWorld() {
assertEquals("hello world", MessageBuilder.getHelloWorld());
}
@Test
public void testNumber10() {
assertEquals(10, MessageBuilder.getNumber10());
}
}
2. Mavenテスト
2.1すべてのテストクラスを実行します。
ターミナル
$ mvn test [INFO]-------------------------------------------------------[INFO] T E S T S[INFO]-------------------------------------------------------[INFO]Running com.mkyong.examples.TestMagicBuilder[INFO]Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s - in com.mkyong.examples.TestMagicBuilder[INFO]Running com.mkyong.examples.TestMessageBuilder[INFO]Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s - in com.mkyong.examples.TestMessageBuilder[INFO].... 2.2単一のテストクラス `TestMessageBuilder`を実行します。 ターミナル
$ mvn -Dtest=TestMessageBuilder test
[INFO]——————————————————-[INFO] T E S T S[INFO]——————————————————-[INFO]Running com.mkyong.examples.TestMessageBuilder[INFO]Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s – in com.mkyong.examples.TestMessageBuilder[INFO]….
2.3テストクラス
TestMessageBuilder`から単一のテストメソッド
testHelloWorld() `を実行します。
ターミナル
$ mvn -Dtest=TestMessageBuilder#testHelloWorld test [INFO]-------------------------------------------------------[INFO] T E S T S[INFO]-------------------------------------------------------[INFO]Running com.mkyong.examples.TestMessageBuilder[INFO]Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s - in com.mkyong.examples.TestMessageBuilder[INFO].... === ソースコードをダウンロードする $ git clone https://github.com/mkyong/maven-examples.git $ cd maven-unit-test $ mvn test $ mvn -Dtest = TestMessageBuilderテスト$ mvn -Dtest = TestMessageBuilder#testHelloWorldテスト === 参考文献 . https://junit.org/junit5/[JUnit 5] . https://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html[Running シングルテスト] link://tag/junit/[junit]link://tag/junit-5/[junit 5]link://tag/maven/[maven]link://タグ/unit-test/[unit test]