`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]