`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ディレクトリ構造。


image

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]