Mavenで単体テストを実行する方法

Mavenで単体テストを実行する方法

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

    
        

            
                org.apache.maven.plugins
                maven-surefire-plugin
                2.22.0
            

        
    

1. Maven Javaプロジェクト

Mavenで単体テストクラスを実行する方法について、簡単なJavaプロジェクトを確認してください。

1.1 Directory Structure.

image

1.2 Maven + JUnit 5 examples.

pom.xml



    4.0.0
    com.example.examples
    maven-unit-test
    jar
    1.0-SNAPSHOT

    
        
        UTF-8
        1.8
        1.8
    

    

        
        
            org.junit.jupiter
            junit-jupiter-engine
            5.3.1
            test
        

    
    
        maven-unit-test
        

            
                org.apache.maven.plugins
                maven-surefire-plugin
                2.22.0
            

        
    

1.3 Two Java classes, later we will create unit test classes for it.

MagicBuilder.java

package com.example.examples;

public class MagicBuilder {

    public static int getLucky() {
        return 7;
    }

}

MessageBuilder.java

package com.example.examples;

public class MessageBuilder {

    public static String getHelloWorld(){
        return "hello world";
    }

    public static int getNumber10(){
        return 10;
    }

}

1.4 Test class for MagicBuilder

TestMagicBuilder.java

package com.example.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 Test class for MessageBuilder

pom.xml

package com.example.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 Run all test classes.

ターミナル

$ mvn test

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.example.examples.TestMagicBuilder
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s - in com.example.examples.TestMagicBuilder
[INFO] Running com.example.examples.TestMessageBuilder
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s - in com.example.examples.TestMessageBuilder
[INFO]

2.2 Run a single test class TestMessageBuilder

ターミナル

$ mvn -Dtest=TestMessageBuilder test

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.example.examples.TestMessageBuilder
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s - in com.example.examples.TestMessageBuilder
[INFO]

2.3 Run a single test method testHelloWorld() from the test class TestMessageBuilder

ターミナル

$ mvn -Dtest=TestMessageBuilder#testHelloWorld test

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.example.examples.TestMessageBuilder
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s - in com.example.examples.TestMessageBuilder
[INFO]

ソースコードをダウンロード

$ git clone https://github.com/example/maven-examples.git
$ cd maven-unit-test
$ mvn test
$ mvn -Dtest=TestMessageBuilder test
$ mvn -Dtest=TestMessageBuilder#testHelloWorld test