我有一个 Maven 程序,它编译得很好。当我运行 mvn test
时,它不会运行任何测试(在 TESTs 标题下显示 There are no tests to run.
)。
我用一个超级简单的设置重新创建了这个问题,我将在下面包括使用 -X
运行时的输出。
单元测试在 Eclipse 中运行良好(无论是使用其默认的 junit 包,还是当我包含由 maven 下载的 junit.jar 时)。 mvn test-compile
也正确创建了测试类下的类。我在带有 Maven 3.0.2 和 java 1.6.0_24 的 OSX 10.6.7 上运行它。
这是目录结构:
/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>
类UnderTest.java:
public class ClassUnderTest {
public int functionUnderTest(int n) {
return n;
}
}
类UnderTestTests.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] ------------------------------------------------------------------------
ALT+ENTER
来创建测试,maven 将无法识别测试类并且不会运行它。但是,当我根据 Maven 命名约定手动创建测试文件时,它将被 Maven 识别并运行。我还没有弄清楚如何扭转 IntelliJ 破坏测试的过程
默认情况下,Maven uses the following naming conventions 在寻找要运行的测试时:
测试*
*测试
*测试(已在 Maven Surefire 插件 2.20 中添加)
*测试用例
如果您的测试类不遵循这些约定,您应该重命名它或 configure Maven Surefire Plugin 为测试类使用另一种模式。
我还发现单元测试代码应该放在src/test/java
文件夹下,如果放在主文件夹下,它不能被识别为测试类。例如。
错误的
/my_program/src/main/java/NotTest.java
正确的
/my_program/src/test/java/MyTest.java
pom.xml
文件中将范围设置为测试 (<scope>test<scope>
) 为我做了这件事。
更新:
就像@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>
来源:https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven
2021 年更新
junit-platform-surefire-provider 最初由 JUnit 团队开发,在 JUnit Platform 1.3 中已弃用,并在 1.4 中停止使用。请改用 Maven Surefire 的原生支持。
junit-platform-surefire-provider
的“未找到”。
surefire-provider
或 jupiter-engine
工件的依赖项。至少,在没有它们的情况下,我的测试似乎运行良好。见this answer。
org.junit.jupiter.api.Test
而不是 org.junit.Test
,否则将找不到测试。
@Mock
不兼容,整个测试模块变得无用:(现在需要解决方案:)
如果未正确声明模块的打包,则可能导致 Maven 找不到测试的另一件事。
在最近的一个案例中,有人有 <packaging>pom</packaging>
,而我的测试从未运行过。我将其更改为 <packaging>jar</packaging>
,现在它工作正常。
package type is pom - so not running tests
- 为开发人员提供一些线索:(
pom
的打包一起使用?
在我的例子中,它添加了 junit-vintage-engine 使其与旧版本的 JUnit 测试兼容并可以运行它们。因为我正在使用 JUnit 5。
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
</dependency>
如果您使用 Spring 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
开始查看项目的测试。
此外,检查您的测试类目录(例如 src/test/java)是否对应于您的 pom.xml 中 <build>
属性下的属性 <testSourceDirectory>
中列出的目录。我花了一段时间才找到。
其中许多答案在过去对我非常有用,但我想添加一个花费我一些时间的额外场景,因为它可能会在未来帮助其他人:
确保测试类和方法是公开的。
我的问题是我正在使用我的 IDE (IntelliJ) 的自动测试类/方法生成功能,并且由于某种原因,它将它们创建为包私有。我发现这比人们预期的更容易错过。
我在这个问题上挣扎。就我而言,我没有导入正确的 @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() {
}
}
如果项目有 <packaging>pom</packaging>
,Maven 将不会运行您的测试
您需要将包装设置为 jar(或其他一些 java 人工制品类型)才能运行测试:<packaging>jar</packaging>
pom
的打包一起使用?
发现如果您在测试前加上“抽象”前缀,默认情况下它也会被忽略。
*/TestAbstractSomeClassName.java
。
检查(对于 jUnit - 4.12 和 Eclipse surefire 插件)
在依赖项中的 POM.xml 中添加所需的 jUnit 版本。执行 Maven -> 更新项目以查看项目中导出的所需 jar。测试类位于文件夹 src/test/java 和该文件夹的子目录下(或者基本文件夹可以在 POM 中的 config testSourceDirectory 中指定)。类的名称应该有尾词“测试”。测试类中的测试方法应该有注解@Test
src/test/java
。包约定用于结构并允许测试访问包私有方法。
以下在 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>
<!-- ... -->
junit-jupiter-engine
依赖项完成了工作。
我也有类似的问题,经过探索发现 testng 依赖导致了这个问题。从 pom 中删除 testng 依赖项后(因为我不再需要它),它开始对我正常工作。
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
<scope>test</scope>
</dependency>
就我而言,我们正在将多模块应用程序迁移到 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>
Maven Surefire 插件支持多种测试框架。它会尝试自动检测您正在使用的框架,然后查找使用该框架编写的测试。如果该自动检测被混淆,并且选择了错误的框架,那么第二阶段将找不到您的测试。
自动检测通过扫描类路径以查找其支持的测试框架的重要“驱动程序”类的存在。因此,如果您的 POM 或依赖的模块对这些“驱动程序”类之一具有不正确的依赖关系,则自动检测可能会出错。
目前(2020 年),一个特殊的问题是 JUnit 4 和 JUnit 5 之间的差异。Surefire 插件将它们视为不同的框架。但是由于包名称的相似性,一个项目可能依赖于错误的框架,但随便检查一下似乎没问题。
特别要注意的是,junit-platform-console
用于 JUnit 5,而 junit-platform-runner
用于 JUnit 4。如果您的项目依赖于后者,Surefire 将不会运行您的 JUnit 5 测试。
如果您的测试类名称不遵循标准命名约定(如上面 @axtavt 突出显示的那样),您需要在 pom.xml
中添加模式/类名称以便 Maven 选择测试 -
...
<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>
...
如果您有一个共享的 Java/Groovy 应用程序并且您只有 Groovy 单元测试,那么 Maven 将找不到任何测试。这可以通过在 src/test/java 下添加一个单元测试来解决。
/my_program/src/test/java/ClassUnderTestTests.java
应该
/my_program/src/test/java/ClassUnderTestTest.java
Maven 找到那些以 Test 结尾或以 Test 开始以自动运行。
但是,您可以使用
mvn surefire:test -Dtest=ClassUnderTestTests.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>
我遇到了同样的问题,它通过 pom.xml 中的以下更改解决:
<build>
<testSourceDirectory>test</testSourceDirectory>
...
变成:
<build>
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
可能不是一个常见的错误,但除了 @João Matos 的答案。除了您的方法公开的要求之外:
您的方法也应该是 void
,当然还有 @Test
注释。
这不起作用:
@Test
public Integer fooBarTest() {
// omitted
}
它必须返回一个 void
:
@Test
public void fooBarTest() {
// omitted
}
还有一个提示(除了以前的答案):
在 Eclipse 中,转到项目的 Properties >点击Run/Debug Settings
:
“此页面允许您使用当前选定的资源管理启动配置”
在那里,您可以添加(新建...)或删除(删除)您在项目中拥有的任何 JU (JUnit) 测试(在 src/test/java
文件夹或课程下)。
就我而言,我的父母 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>
我的单元测试开始运行
使用 Surefire 插件,您可能希望包含所有用于测试的文件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<includes>
<include>*</include>
</includes>
</configuration>
</plugin>
通过这种方式,您可以测试所有文件,而不仅仅是包含 Surefire 所需模式的文件。
不运行测试用例的另一个原因发生在我身上——我有一个名为“test”的属性用于完全不同的目的,但它干扰了surefire插件。因此,请检查您的 POM:
<properties>
<test>.... </test>
...
</properties>
并将其删除。
如果您已经在 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>
当您将 surfire 插件 3.x.x+ 与 JUnit5 一起使用并错误地使用 JUnit4 的 @Test
注释对测试类进行注释时,可能会出现此类问题。
使用:org.junit.jupiter.api.Test
(JUnit5) 而不是 org.junit.Test
(Junit4)
注意:这可能很难注意到,因为 IDE 可能会像 JUnit4 测试一样运行它而没有问题。
我最近遇到的另一个容易被忽视的问题 - 确保您的测试类文件具有 .java 扩展名。如果没有要编译的测试,就没有要运行的测试
在使用 Junit4 进行 Spring Boot 项目设置时遇到了这个问题。 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) 而不是@RunWith(SpringRunner.class)
**/*Tests.java
是默认包含!