在 JUnit 4 但不是 JUnit 5 下测试 运行 - 编译干净,但执行 0 个测试
Tests run under JUnit 4 but not JUnit 5 — Compiles clean, but 0 tests execute
任何人都可以在几分钟内轻松重现此问题。
基本 Maven quickstart
项目
使用 IntelliJ 2018.3 和 Maven 3.6.0,我使用 Maven 原型 maven-archetype-quickstart
版本 1.4 创建了一个 b运行d 新项目。
Java 11
在新项目的 POM 文件中,我将 maven.compiler.source
和 maven.compiler.target
的属性从 1.7 更改为 11,对于我当前使用的 Java 11.0.2,Zulu from Azul Systems.
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
在 IntelliJ 的 Maven 面板上,我 运行 clean
和 install
生命周期事件。
在 JUnit 4 中测试 运行s
作为 install
的一部分,测试是 运行。这个 quickstart
原型带有一个断言 true
.
的单一测试
结果显示在 IntelliJ 的 Run
面板中。
[INFO] Running work.basil.example.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.026 s - in work.basil.example.AppTest
所以我知道执行了测试。
JUnit 5,不是 4
这一切都很好。现在让我们升级到 JUnit 5,看看问题所在。
在 POM 中,我将 JUnit 依赖项更改为:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
……对此:
<dependencies>
<!--JUnit 5-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.2</version>
<scope>test</scope>
</dependency>
</dependencies>
Jupiter 导入(无复古测试)
编译器抱怨我的 AppTest.java
文件。所以我更改了那里的 import
语句以使用 jupiter
包。我只想在我的新 greedfield 项目中进行 运行 JUnit 5 测试,不需要老式 JUnit 4 测试。所以进口从这个改变:
import static org.junit.Assert.assertTrue;
import org.junit.Test;
……对此:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;
然后我执行 Maven
> Lifecycle
> clean
& install
.
…瞧,问题是:我们的测试没有执行。在 IntelliJ 的 Run
面板中看到的报告:
[INFO] Running work.basil.example.AppTest
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s - in work.basil.example.AppTest
➥ 为什么 JUnit 5 无法 运行 与 JUnit 4 愉快地 运行 完全相同的测试?
更新surefire
插件
我怀疑 Maven Surefire Plugin 需要更新。所以在 POM 中我改变了这个:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
……对此:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
</plugin>
另一个 clean
& install
。但也好不到哪儿去,还是 运行s 0 次测试。
[INFO] Running work.basil.example.AppTest
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s - in work.basil.example.AppTest
整个 POM
这是我的整个 POM 文件。
<?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>work.basil.example</groupId>
<artifactId>tester</artifactId>
<version>1.0-SNAPSHOT</version>
<name>tester</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<!--JUnit 5-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
JUnit 库
做了一个Maven clean
& install
后,出现了两个JUnit库:junit-jupiter-api
和junit-platform-commons
.
其他版本的 JUnit 5
我在 junit-jupiter-api
依赖项中尝试了以下版本:
- 5.0.0-M1
- 5.1.1
- 5.3.0
- 5.3.2
- 5.4.0-M1
每次尝试,我 运行 Maven clean
& install
。没有更好的。每个版本都报告了 Tests run: 0
.
不怪maven-archetype-quickstart
我实际上是在一个使用完全不同的 Maven 原型的非常不同的项目中发现了这个问题。
为了确定 JUnit 5 这种有缺陷的行为,我尝试了一个使用非常简单的 maven-archetype-quickstart
的新项目。我发现了完全相同的行为:一切都编译了,运行ning 中的测试工具,但在 JUnit 5 下没有执行任何测试。
tl;博士
对于 JUnit 5 版本 5.4.0-M1 或更高版本,请在 POM 中指定新的单一 Maven 工件 junit-jupiter
“聚合器”。
<!--JUnit 5-->
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.4.0-M1</version>
</dependency>
对于早期版本,至少指定这两个工件:junit-jupiter-api
& junit-jupiter-engine
。
JUnit 5 结合了多个测试框架
据我所知,JUnit 5 已经过重新架构,可以成为多个测试框架的纽带。这些测试系统包括 JUnit 4“老式”测试、新的 JUnit 5 测试(新的测试语法,带有新的注释和方法),以及其他如 Specsy, Spek, Cucumber, Drools Scenario, jqwik, and more that implement the TestEngine
接口。
显然 junit-jupiter-api
神器只是外轭。您还必须指定一个或多个 TestEngine
implementations to actually run tests. For example, to run the vintage JUnit 4 tests, you need the VintageTestEngine
implementations, or to run JUNit 5 tests you need the JupiterTestEngine
实现。
因此,对于 运行 您的 JUnit 5 测试,您必须在 Maven POM 中使用 junit-jupiter-engine
工件指定 JupiterTestEngine
实现。
参见 JUnit 5 手册,特别是 Configuring Test Engines.
部分
参见 Marc Philipp 的 this presentation,其中的图表显示 JUnit 5 作为一个平台,具有 (A) IDE/build 工具的核心和 (B) 供程序员编写测试的可插入测试编写框架.
junit-jupiter-engine
正如在 this sample, add a second JUnit-related dependency for the JUNit Jupiter Engine. The documentation for this artifact 上看到的那样简单地说:“JUnit Jupiter 测试引擎实现,仅在 运行 时需要。”。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
只需将这一依赖项添加到您的问题中显示的项目中,即可看到您的测试 运行。
[INFO] Running work.basil.example.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s - in work.basil.example.AppTest
junit-jupiter-params
同一个示例还显示了第三个 JUnit 依赖项,用于 JUnit Jupiter Params. While not needed to make your example test run, it may serve other purposes. Apparently related to Parameterized Tests。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
总共有 3 个 JUnit 依赖项。
<!--JUnit 5-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
您的同一个 POM 文件,现在已更新为所有 3 个 JUnit 依赖项。
<?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>work.basil.example</groupId>
<artifactId>tester</artifactId>
<version>1.0-SNAPSHOT</version>
<name>tester</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<!--JUnit 5-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
junit-jupiter
神器
JUnit 5 5.4.0 版带来了一个新的 Maven 工件,junit-jupiter
名为 JUnit Jupiter(聚合器)。 “聚合器*”这个词显然是指它在 Maven 中捆绑了一些常用的 JUnit 5 工件,以方便我们的编程。
在您的 POM 中添加这一个 dependency
可以在您的项目中获得 8 个库。
<!--JUnit 5-->
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.4.0-M1</version>
</dependency>
任何人都可以在几分钟内轻松重现此问题。
基本 Maven quickstart
项目
使用 IntelliJ 2018.3 和 Maven 3.6.0,我使用 Maven 原型 maven-archetype-quickstart
版本 1.4 创建了一个 b运行d 新项目。
Java 11
在新项目的 POM 文件中,我将 maven.compiler.source
和 maven.compiler.target
的属性从 1.7 更改为 11,对于我当前使用的 Java 11.0.2,Zulu from Azul Systems.
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
在 IntelliJ 的 Maven 面板上,我 运行 clean
和 install
生命周期事件。
在 JUnit 4 中测试 运行s
作为 install
的一部分,测试是 运行。这个 quickstart
原型带有一个断言 true
.
结果显示在 IntelliJ 的 Run
面板中。
[INFO] Running work.basil.example.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.026 s - in work.basil.example.AppTest
所以我知道执行了测试。
JUnit 5,不是 4
这一切都很好。现在让我们升级到 JUnit 5,看看问题所在。
在 POM 中,我将 JUnit 依赖项更改为:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
……对此:
<dependencies>
<!--JUnit 5-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.2</version>
<scope>test</scope>
</dependency>
</dependencies>
Jupiter 导入(无复古测试)
编译器抱怨我的 AppTest.java
文件。所以我更改了那里的 import
语句以使用 jupiter
包。我只想在我的新 greedfield 项目中进行 运行 JUnit 5 测试,不需要老式 JUnit 4 测试。所以进口从这个改变:
import static org.junit.Assert.assertTrue;
import org.junit.Test;
……对此:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;
然后我执行 Maven
> Lifecycle
> clean
& install
.
…瞧,问题是:我们的测试没有执行。在 IntelliJ 的 Run
面板中看到的报告:
[INFO] Running work.basil.example.AppTest
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s - in work.basil.example.AppTest
➥ 为什么 JUnit 5 无法 运行 与 JUnit 4 愉快地 运行 完全相同的测试?
更新surefire
插件
我怀疑 Maven Surefire Plugin 需要更新。所以在 POM 中我改变了这个:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
……对此:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
</plugin>
另一个 clean
& install
。但也好不到哪儿去,还是 运行s 0 次测试。
[INFO] Running work.basil.example.AppTest
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s - in work.basil.example.AppTest
整个 POM
这是我的整个 POM 文件。
<?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>work.basil.example</groupId>
<artifactId>tester</artifactId>
<version>1.0-SNAPSHOT</version>
<name>tester</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<!--JUnit 5-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
JUnit 库
做了一个Maven clean
& install
后,出现了两个JUnit库:junit-jupiter-api
和junit-platform-commons
.
其他版本的 JUnit 5
我在 junit-jupiter-api
依赖项中尝试了以下版本:
- 5.0.0-M1
- 5.1.1
- 5.3.0
- 5.3.2
- 5.4.0-M1
每次尝试,我 运行 Maven clean
& install
。没有更好的。每个版本都报告了 Tests run: 0
.
不怪maven-archetype-quickstart
我实际上是在一个使用完全不同的 Maven 原型的非常不同的项目中发现了这个问题。
为了确定 JUnit 5 这种有缺陷的行为,我尝试了一个使用非常简单的 maven-archetype-quickstart
的新项目。我发现了完全相同的行为:一切都编译了,运行ning 中的测试工具,但在 JUnit 5 下没有执行任何测试。
tl;博士
对于 JUnit 5 版本 5.4.0-M1 或更高版本,请在 POM 中指定新的单一 Maven 工件 junit-jupiter
“聚合器”。
<!--JUnit 5-->
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.4.0-M1</version>
</dependency>
对于早期版本,至少指定这两个工件:junit-jupiter-api
& junit-jupiter-engine
。
JUnit 5 结合了多个测试框架
据我所知,JUnit 5 已经过重新架构,可以成为多个测试框架的纽带。这些测试系统包括 JUnit 4“老式”测试、新的 JUnit 5 测试(新的测试语法,带有新的注释和方法),以及其他如 Specsy, Spek, Cucumber, Drools Scenario, jqwik, and more that implement the TestEngine
接口。
显然 junit-jupiter-api
神器只是外轭。您还必须指定一个或多个 TestEngine
implementations to actually run tests. For example, to run the vintage JUnit 4 tests, you need the VintageTestEngine
implementations, or to run JUNit 5 tests you need the JupiterTestEngine
实现。
因此,对于 运行 您的 JUnit 5 测试,您必须在 Maven POM 中使用 junit-jupiter-engine
工件指定 JupiterTestEngine
实现。
参见 JUnit 5 手册,特别是 Configuring Test Engines.
部分参见 Marc Philipp 的 this presentation,其中的图表显示 JUnit 5 作为一个平台,具有 (A) IDE/build 工具的核心和 (B) 供程序员编写测试的可插入测试编写框架.
junit-jupiter-engine
正如在 this sample, add a second JUnit-related dependency for the JUNit Jupiter Engine. The documentation for this artifact 上看到的那样简单地说:“JUnit Jupiter 测试引擎实现,仅在 运行 时需要。”。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
只需将这一依赖项添加到您的问题中显示的项目中,即可看到您的测试 运行。
[INFO] Running work.basil.example.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s - in work.basil.example.AppTest
junit-jupiter-params
同一个示例还显示了第三个 JUnit 依赖项,用于 JUnit Jupiter Params. While not needed to make your example test run, it may serve other purposes. Apparently related to Parameterized Tests。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
总共有 3 个 JUnit 依赖项。
<!--JUnit 5-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
您的同一个 POM 文件,现在已更新为所有 3 个 JUnit 依赖项。
<?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>work.basil.example</groupId>
<artifactId>tester</artifactId>
<version>1.0-SNAPSHOT</version>
<name>tester</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<!--JUnit 5-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.0-M1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
junit-jupiter
神器
JUnit 5 5.4.0 版带来了一个新的 Maven 工件,junit-jupiter
名为 JUnit Jupiter(聚合器)。 “聚合器*”这个词显然是指它在 Maven 中捆绑了一些常用的 JUnit 5 工件,以方便我们的编程。
在您的 POM 中添加这一个 dependency
可以在您的项目中获得 8 个库。
<!--JUnit 5-->
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.4.0-M1</version>
</dependency>