本文翻译自JUnit 5 Maven Example: Running Tests with Surefire

JUnit 5 Maven

在本教程中,我们将学习在基于Maven编写JUnit 5测试时如何获取相关的依赖,以及如何配置maven-surefire-plugin来运行相关测试。

本文是JUnit 5 教程的一部分。

相关依赖

若要能够编写JUnit 5测试需要在pom.xml中添加junit-jupiter作为依赖项:

1
2
3
4
5
6
7
8
<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>5.8.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

此外还需添加maven-surefire-plugin以便能运行JUnit 5测试:

1
2
3
4
5
6
7
8
9
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
        </plugin>
    </plugins>
</build>

至此我们已经有了使用Maven编写和运行JUnit 5测试的最基本配置。

旧版本配置

JUnit Jupiter 5.4.0开始,有一个聚合器组件junit-jupiter,它可以传递对junit-jupiter-apijunit-jupiter-paramsjunit-jupiter-engine的依赖关系,从而简化依赖关系管理。

为了能够使用旧版本编写JUnit 5测试,需要junit-jupiter-api组件作为依赖项:

1
2
3
4
5
6
7
8
<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.3.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Maven Surefire2.22.0 开始,对JUnit Jupiter提供了原生支持,当使用Maven Surefire2.21.0或更早版本时,则必须使用Maven Surefire插件来运行测试:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <dependencies>
                <dependency>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>junit-platform-surefire-provider</artifactId>
                    <version>1.3.2</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

同样需要在运行时类路径下添加JUnit Jupiter测试引擎,可在 maven-surefire-plugin插件中添加相关依赖:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <dependencies>
                <dependency>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>junit-platform-surefire-provider</artifactId>
                    <version>1.3.2</version>
                </dependency>
                <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                    <version>5.3.2</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

至此我们已经有了使用旧版本的Maven Surefire运行JUnit 5测试的基本配置。

运行测试

maven-surefire-plugin插件默认情况下在src/test/java目录下查找测试用例。

可通过添加一个空测试来检查我们的配置是否生效。

1
2
3
4
5
6
7
class MavenExampleTest {

    @Test
    void shouldRun() {

    }
}

在命令行中运行相关测试:

1
mvn test

我们应该能看到类似如下输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[INFO] --- maven-surefire-plugin:2.22.0:test (default-test) @ junit5-maven ---
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running MavenExampleTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s - in MavenExampleTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

好了,Maven Surefire现在可正常运行测试。

总结

在这篇JUnit 5 Maven 示例中,我们学习了如何添加编写JUnit 5测试所需的依赖项以及如何配置Maven Surefire插件以便能够运行测试。

本文的示例代码能在GitHub中找到。