嗨,
我是从start.spring.io开始的,就像下面这样:
我试图检查默认的测试是否正常,但是它甚至没有开始。而且,我在控制台上得到了这个错误,而不是测试结果。
我谷歌了一下,人们说似乎与jupiter-api版本有关。 所以我添加了一些依赖项,像这样。但是没有起作用。
我也尝试了不同的方法。我在我的Eclipse IDE上添加了Java Build Path,但也没有起作用。 (右键单击我的项目>属性>Java Build Path>模块路径(也尝试过类路径)>添加库>JUnit)
我没有看到关于JUnit错误的相同案例,错误信息是'java.util.Set org.junit.platform.engine.TestDescriptor.getAncestors()'。 所以我现在很困惑,请帮忙。
![enter image description here](https://istack.dev59.com/Pkbtn.webp)
java.lang.NoSuchMethodError: 'java.util.Set org.junit.platform.engine.TestDescriptor.getAncestors()'
at org.junit.platform.launcher.core.StackTracePruningEngineExecutionListener.getTestClassNames(StackTracePruningEngineExecutionListener.java:50)
at org.junit.platform.launcher.core.StackTracePruningEngineExecutionListener.executionFinished(StackTracePruningEngineExecutionListener.java:39)
at org.junit.platform.launcher.core.DelegatingEngineExecutionListener.executionFinished(DelegatingEngineExecutionListener.java:46)
at org.junit.platform.launcher.core.OutcomeDelayingEngineExecutionListener.reportEngineFailure(OutcomeDelayingEngineExecutionListener.java:83)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:203)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:169)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:93)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:58)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:141)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:57)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:103)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:94)
at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:52)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:70)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:98)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:40)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:529)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:756)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
我谷歌了一下,人们说似乎与jupiter-api版本有关。 所以我添加了一些依赖项,像这样。但是没有起作用。
// build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.3'
id 'io.spring.dependency-management' version '1.1.3'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation('org.junit.jupiter:junit-jupiter-api:5.9.3') /// added version
testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.9.3') /// added version
}
tasks.named('test') {
useJUnitPlatform()
}
我也尝试了不同的方法。我在我的Eclipse IDE上添加了Java Build Path,但也没有起作用。 (右键单击我的项目>属性>Java Build Path>模块路径(也尝试过类路径)>添加库>JUnit)
我没有看到关于JUnit错误的相同案例,错误信息是'java.util.Set org.junit.platform.engine.TestDescriptor.getAncestors()'。 所以我现在很困惑,请帮忙。
5.10.0
上运行吗,而不是5.9.3
?顺便说一句,底部右侧的绿色高亮显示和_覆盖率_视图表明您可能错误地运行了_配置文件_。您可以通过点击_删除所有会话_按钮来取消_覆盖率_视图中的绿色高亮显示。 - undefineddependencies
块中通过显式版本声明无法覆盖由Spring Boot依赖管理声明的库的版本。相反,您必须使用https://www.baeldung.com/spring-boot-override-dependency-versions#2-gradle中描述的机制。 - undefinedgetAncestors
方法是 JUnit 5.10.0 的org.junit.platform:junit-platform-engine:1.10.0
的一部分,这是目前最新的版本。在较低的版本中,该方法是缺失的(与 @majixin 所说的相反)。所以问题是:它是通过什么来使用的?请提供一个完整但最小化的可复现示例,包括一个build.gradle
文件和测试代码。 - undefined