Maven没有找到要运行的JUnit测试

我有一个maven程序,它编译得很好。当我运行mvn test时,它不运行任何测试(在测试头下说There are no tests to run.)。

我用一个超级简单的设置重新创建了这个问题,我将在下面包括这个设置以及使用-X运行时的输出。

单元测试在eclipse中运行良好(使用默认的junit包和使用maven下载的junit.jar)。mvn test-compile也正确地创建了test-classes下的类。我在OSX 10.6.7上运行,使用Maven 3.0.2和java 1.6.0_24。

下面是目录结构:

/my_program/pom.xml
/my_program/src/main/java/ClassUnderTest.java
/my_program/src/test/java/ClassUnderTestTests.java

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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my_group</groupId>
<artifactId>my_program</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>My Program</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

ClassUnderTest.java:

public class ClassUnderTest {


public int functionUnderTest(int n) {
return n;
}


}

ClassUnderTestTests.java:

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;


public class ClassUnderTestTests {


private ClassUnderTest o;


@Before
public void setUp() {
o = new ClassUnderTest();
}


@Test
public void testFunctionUnderTest_testCase1() {
Assert.assertEquals(1, o.functionUnderTest(1));
}


@Test
public void testFunctionUnderTest_testCase2() {
Assert.assertEquals(2, o.functionUnderTest(2));
}
}

mvn -X测试结束:

[DEBUG] Configuring mojo org.apache.maven.plugins:maven-surefire-plugin:2.7.1:test from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-surefire-plugin:2.7.1, parent: sun.misc.Launcher$AppClassLoader@5224ee]
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-surefire-plugin:2.7.1:test' with basic configurator -->
[DEBUG]   (s) basedir = /Users/aaron/Programs/my_program
[DEBUG]   (s) childDelegation = false
[DEBUG]   (s) classesDirectory = /Users/aaron/Programs/my_program/target/classes
[DEBUG]   (s) disableXmlReport = false
[DEBUG]   (s) enableAssertions = true
[DEBUG]   (s) forkMode = once
[DEBUG]   (s) junitArtifactName = junit:junit
[DEBUG]   (s) localRepository =        id: local
url: file:///Users/aaron/.m2/repository/
layout: none


[DEBUG]   (f) parallelMavenExecution = false
[DEBUG]   (s) pluginArtifactMap = {org.apache.maven.plugins:maven-surefire-plugin=org.apache.maven.plugins:maven-surefire-plugin:maven-plugin:2.7.1:, org.apache.maven.surefire:surefire-booter=org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile, org.apache.maven.surefire:surefire-api=org.apache.maven.surefire:surefire-api:jar:2.7.1:compile, org.apache.maven.surefire:maven-surefire-common=org.apache.maven.surefire:maven-surefire-common:jar:2.7.1:compile, org.apache.maven.shared:maven-common-artifact-filters=org.apache.maven.shared:maven-common-artifact-filters:jar:1.3:compile, org.codehaus.plexus:plexus-utils=org.codehaus.plexus:plexus-utils:jar:2.0.5:compile, junit:junit=junit:junit:jar:3.8.1:compile, org.apache.maven.reporting:maven-reporting-api=org.apache.maven.reporting:maven-reporting-api:jar:2.0.9:compile}
[DEBUG]   (s) printSummary = true
[DEBUG]   (s) project = MavenProject: my_group:my_program:1.0-SNAPSHOT @ /Users/aaron/Programs/my_program/pom.xml
[DEBUG]   (s) projectArtifactMap = {junit:junit=junit:junit:jar:4.8.1:test}
[DEBUG]   (s) redirectTestOutputToFile = false
[DEBUG]   (s) remoteRepositories = [       id: central
url: http://repo1.maven.org/maven2
layout: default
snapshots: [enabled => false, update => daily]
releases: [enabled => true, update => never]
]
[DEBUG]   (s) reportFormat = brief
[DEBUG]   (s) reportsDirectory = /Users/aaron/Programs/my_program/target/surefire-reports
[DEBUG]   (s) session = org.apache.maven.execution.MavenSession@dfbb43
[DEBUG]   (s) skip = false
[DEBUG]   (s) skipTests = false
[DEBUG]   (s) testClassesDirectory = /Users/aaron/Programs/my_program/target/test-classes
[DEBUG]   (s) testFailureIgnore = false
[DEBUG]   (s) testNGArtifactName = org.testng:testng
[DEBUG]   (s) testSourceDirectory = /Users/aaron/Programs/my_program/src/test/java
[DEBUG]   (s) trimStackTrace = true
[DEBUG]   (s) useFile = true
[DEBUG]   (s) useManifestOnlyJar = true
[DEBUG]   (s) workingDirectory = /Users/aaron/Programs/my_program
[DEBUG] -- end configuration --
[INFO] Surefire report directory: /Users/aaron/Programs/my_program/target/surefire-reports
[DEBUG] Setting system property [user.dir]=[/Users/aaron/Programs/my_program]
[DEBUG] Setting system property [localRepository]=[/Users/aaron/.m2/repository]
[DEBUG] Setting system property [basedir]=[/Users/aaron/Programs/my_program]
[DEBUG] Using JVM: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile (selected for compile)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.1:compile (selected for compile)
[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-booter/2.7.1/surefire-booter-2.7.1.jar Scope: compile
[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: compile
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.apache.maven.surefire:surefire-junit4:jar:2.7.1:test (selected for test)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.1:test (selected for test)
[DEBUG] Adding to surefire test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-junit4/2.7.1/surefire-junit4-2.7.1.jar Scope: test
[DEBUG] Adding to surefire test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: test
[DEBUG] Test Classpath :
[DEBUG]   /Users/aaron/Programs/my_program/target/test-classes
[DEBUG]   /Users/aaron/Programs/my_program/target/classes
[DEBUG]   /Users/aaron/.m2/repository/junit/junit/4.8.1/junit-4.8.1.jar
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile (selected for compile)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.1:compile (selected for compile)
[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-booter/2.7.1/surefire-booter-2.7.1.jar Scope: compile
[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: compile
Forking command line: /bin/sh -c cd /Users/aaron/Programs/my_program && /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -jar /Users/aaron/Programs/my_program/target/surefire/surefirebooter6118081963679415631.jar /Users/aaron/Programs/my_program/target/surefire/surefire4887918564882595612tmp /Users/aaron/Programs/my_program/target/surefire/surefire9012255138269731406tmp


-------------------------------------------------------
T E S T S
-------------------------------------------------------
There are no tests to run.


Results :


Tests run: 0, Failures: 0, Errors: 0, Skipped: 0


[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.089s
[INFO] Finished at: Mon May 30 12:03:09 EDT 2011
[INFO] Final Memory: 7M/62M
[INFO] ------------------------------------------------------------------------
411921 次浏览

在寻找要运行的测试时,默认的Maven 使用以下命名约定:

如果你的测试类不遵循这些惯例,你应该重命名它或配置Maven Surefire插件,以使用另一种模式的测试类。

我还发现单元测试代码应该放在src/test/java文件夹下,如果你把它放在主文件夹下,它就不能被识别为测试类。 如:< / p >

错误的

/my_program/src/main/java/NotTest.java

正确的

/my_program/src/test/java/MyTest.java

如果您有一个共享的Java / Groovy应用程序,并且所有的都是Groovy单元测试,那么Maven将找不到任何测试。这可以通过在src/test/java下添加一个单元测试来解决。

另外,检查你的测试类目录(例如src/test/java)是否与你的pom.xml中<testSourceDirectory>属性中列出的目录对应。我花了好长时间才找到的。

检查一下(对于jUnit - 4.12和Eclipse surefire插件)

  1. 在依赖的POM.xml中添加所需的jUnit版本。Do Maven ->更新项目,以查看所需的jar导出项目。
  2. Test类在src/ Test /java文件夹下和该文件夹的子目录下(或者可以在配置testSourceDirectory的POM中指定基本文件夹)。类名后面应该有“Test”字样。
  3. 测试类中的Test Method应该有注释@Test

另一个可能导致Maven找不到测试的原因是模块的打包声明不正确。

在最近的情况下,有人<packaging>pom</packaging>和我的测试从未运行。我把它改为<packaging>jar</packaging>,现在它工作正常。

发现如果你给一个测试加上“抽象”前缀,默认情况下它也会被忽略。

如果项目有<packaging>pom</packaging>, Maven将不运行您的测试

为了运行测试,您需要将打包设置为jar(或其他java工件类型):<packaging>jar</packaging>

如果使用的JUnit不是标准的(junit:junit), junitArtifactName也可能是这种情况,但例如…

<dependency>
<groupId>org.eclipse.orbit</groupId>
<artifactId>org.junit</artifactId>
<version>4.11.0</version>
<type>bundle</type>
<scope>test</scope>
</dependency>

我也有类似的问题,经过探索发现测试依赖导致了这个问题。从pom中删除测试依赖后(因为我不再需要它了),它开始为我工作得很好。

    <dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
<scope>test</scope>
</dependency>

另一个不运行测试用例的原因发生在我身上——我有一个名为“test”的属性,用于完全不同的目的,但它干扰了surefire插件。因此,请检查您的pom:

<properties>
<test>.... </test>
...
</properties>

然后取出来。

/my_program/src/test/java/ClassUnderTestTests.java

应该是

/my_program/src/test/java/ClassUnderTestTest.java

Maven找到那些以Test结束或以Test开始的自动运行。

但是,你可以使用

mvn surefire:test -Dtest=ClassUnderTestTests.java

做你的测试

为了防止有人搜索而我没有解决它,我有一个用于不同测试的库:

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${org.junit.jupiter.version}</version>
<scope>test</scope>
</dependency>

当我安装junit一切工作,我希望和帮助这:

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>

更新:

就像@scottyseus在评论中说的,从Maven Surefire 2.22.0开始,以下内容就足够了:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>

在使用JUnit 5时,我遇到了同样的问题。Maven Surefire需要一个插件来运行JUnit 5测试。将这个添加到我们的pom.xml:

<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.2.0-M1</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.2.0-M1</version>
</dependency>
</dependencies>
</plugin>
< p >来源: https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven < / p >

更新2021

JUnit Platform -surefire-provider最初是由JUnit团队开发的,在JUnit Platform 1.3中已弃用,并在1.4中停止使用。请使用Maven Surefire的本地支持。

如果您的测试类名称不遵循标准命名约定(如上面的@axtavt突出显示的那样),您需要在pom.xml中添加模式/类名,以便Maven选择test -

...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/*_UT.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
...

还有一个建议(除了前面的答案):

在Eclipse中,转到项目的属性>,单击Run/Debug Settings:

"此页面允许您使用

在那里,你可以添加(新建…)或删除(删除)任何JU (JUnit)测试,你在你的项目(在src/test/java文件夹下,或课程)。

这是我必须添加到pom.xml的确切代码:

    <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.2.0-M1</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>

这是我的依赖项:

    <dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.2.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easytesting</groupId>
<artifactId>fest-assert-core</artifactId>
<version>2.0M10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.2.0-M1</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.2.0-M1</version>
</dependency>
</dependencies>

如果您用JUnit 4编写测试,并将JUnit 5依赖项添加到surefire插件,那么您的测试将无法运行。

在这种情况下,只需从surefire插件注释JUnit 5依赖项:

        <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<!--<dependencies>-->
<!--<dependency>-->
<!--<groupId>org.junit.platform</groupId>-->
<!--<artifactId>junit-platform-surefire-provider</artifactId>-->
<!--<version>1.0.0</version>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>org.junit.jupiter</groupId>-->
<!--<artifactId>junit-jupiter-engine</artifactId>-->
<!--<version>${junit.version}</version>-->
<!--</dependency>-->
<!--</dependencies>-->
</plugin>

在我的例子中,它添加了JUnit -vintage-engine,这使得它与旧版本的JUnit测试兼容,并可以运行它们。因为我正在使用JUnit 5。

<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
</dependency>

我遇到了同样的问题,它解决了以下更改pom.xml:

<build>
<testSourceDirectory>test</testSourceDirectory>

...

更改为:

<build>
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>

这些答案在过去对我来说非常有用,但我想增加一个额外的场景,这花费了我一些时间,因为它可能在未来帮助其他人:

确保测试类和方法是公共的。

我的问题是,我正在使用IDE (IntelliJ)的自动测试类/方法生成特性,由于某种原因,它将它们创建为包私有。我发现这比人们想象的更容易错过。

当你使用surfire插件3.x时,可能会出现这样的问题。使用JUnit5的@Test注释错误地注释了测试类。

使用:org.junit.jupiter.api.Test (JUnit5)而不是org.junit.Test (Junit4)

注意:这可能很难注意到,因为IDE可能会像JUnit4测试一样毫无问题地运行它。

在Junit 5中,下面的工作对我来说很好

https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven

<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.0</version>
</plugin>
</plugins>
</build>
<!-- ... -->
<dependencies>
<!-- ... -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.0</version>
<scope>test</scope>
</dependency>
<!-- ... -->
</dependencies>
<!-- ... -->

我最近遇到的另一个容易被忽视的问题是:确保Test类的文件具有.java扩展名。如果没有要编译的测试,就没有要运行的测试

在我的案例中,我们正在将多模块应用程序迁移到Spring Boot。不幸的是,maven不再执行模块中的所有测试。测试类的命名没有改变,我们遵循命名惯例。

最后,当我将依赖surefire-junit47添加到插件maven-surefire-plugin时,它有所帮助。但我无法解释,为什么,这是反复试验:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>${maven-surefire-plugin.version}</version>
</dependency>
</dependencies>

我很纠结这个问题。在我的例子中,我没有导入正确的@Test注释。

1)检查@Test是否来自org.junit.jupiter.api.Test(如果你使用Junit 5)。

2)使用Junit5代替@RunWith(SpringRunner.class),使用@ExtendWith(SpringExtension.class)

import org.junit.jupiter.api.Test;


@ExtendWith(SpringExtension.class)
@SpringBootTest
@AutoConfigureMockMvc
@TestPropertySource(locations = "classpath:application.properties")
public class CotacaoTest {
@Test
public void testXXX() {


}
}
如果你使用春天Initializr创建了一个Spring Boot应用程序,测试在Intellij Idea中正常运行。 但是,如果尝试从命令行运行测试:

mvn clean test
您可能会感到惊讶,根本没有运行任何测试。我试图添加surefire plugin,但没有运气。 答案很简单:pom.xml包含以下依赖项:

     <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
排除项junit-vintage-engine专门用于保持与JUnit 4.x的向后兼容性。因此,默认情况下,Spring Boot Initializr的新版本不支持它。 在我删除排除后,Maven开始看到项目的测试

Maven Surefire插件支持几个测试框架。它尝试自动检测您正在使用的框架,然后查找使用该框架编写的测试。如果自动检测被混淆了,并选择了错误的框架,那么第二阶段将无法找到您的测试。

自动检测的工作原理是扫描类路径中是否存在重要的“驱动”;它所支持的测试框架的类。因此,如果您的POM或依赖模块对其中一个“驱动程序”有不正确的依赖,则自动检测可能会出错。类。

目前(2020年),一个特殊的问题是JUnit 4和JUnit 5之间的差异。Surefire插件将它们视为不同的框架。但是由于包名称的相似性,项目可能依赖于错误的框架,但在不经意的检查中似乎没有问题。

特别要注意的是,junit-platform-console是JUnit 5的,而junit-platform-runner是JUnit 4的。如果您的项目依赖于后者,Surefire将不会运行JUnit 5测试。

在我的例子中,我的父级pom有一个父级:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>some version</version>
<relativePath/>
</parent>

改为导入spring pom后:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>some version</version>
<type>pom</type>
<scope>import</scope>
</dependency>

我的单元测试开始运行

可能不是一个常见的错误,但除了@Joao马托斯的答案。除了要求你的方法公开之外

你的方法也应该是void,当然还有@Test注释。

这个不会工作:

@Test
public Integer fooBarTest() {
// omitted
}

它必须返回void:

@Test
public void fooBarTest() {
// omitted
}
在使用Junit4进行春季启动项目设置时遇到了这个问题。 Jacoco maven插件总是返回0.00测试覆盖率,maven surefire插件运行0个测试

删除Junit -vintage-engine和surefire-junit47依赖项,并添加以下依赖项以运行Junit 5单元测试。

 <dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.6.2</version>
<scope>test</scope>
</dependency>


添加低于5.6.2的版本会导致ScriptEvaluationException。

同样使用@ExtendWith(SpringExtension.class)代替of@RunWith(springgrunner .class)

我尝试了这个线程中的大多数答案,但只有当我对pom.xml执行以下操作时,它才会工作。

它有org.junit.jupiter作为单独的依赖项

<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>

但随后我在maven-surefire-plugin插件中移动了相同的内容,并且mvn clean install/test开始检测我的测试文件,这些文件位于src/test/java之下

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<dependencies>
<!-- moved here -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
</plugin>

使用Surefire插件,你可能想要包括所有的文件进行测试:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M7</version>
<configuration>
<includes>
<include>*</include>
</includes>
</configuration>
</plugin>

这样你就可以测试所有的文件,而不仅仅是那些包含Surefire要求的模式的文件。

请确保使用junit-jupiter而不是junit-jupiter-api(我偶然使用的)

  <dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.0</version>
<scope>test</scope>
</dependency>