Do *_*ill 9 junit spring-tool-suite spring-boot spring-tools-4
在 Spring Tool Suite (4.20.0) 中运行 JUnit 测试时出现此错误。
测试运行正常,但最后抛出此错误 -
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)
Run Code Online (Sandbox Code Playgroud)
这是我的 Gradle 插件部分 -
plugins {
id 'java'
id 'eclipse'
id 'eclipse-wtp'
id 'org.springframework.boot' version "3.1.4"
id 'io.spring.dependency-management' version "1.1.3"
}
Run Code Online (Sandbox Code Playgroud)
这是我的 Gradle 依赖项部分 -
implementation("org.springframework.boot:spring-boot-starter-parent:3.1.4")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-configuration-processor")
implementation("org.springframework.boot:spring-boot-starter-test")
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我的测试课非常基础 -
@ExtendWith(SpringExtension.class)
@ContextConfiguration(initializers = ConfigDataApplicationContextInitializer.class, classes = { TransformService.class})
@Slf4j
public class TransformServiceTest {
@Autowired
TransformService transformService;
@Test
public void transformXmlTest() throws Exception {
transformService.transformXml();
}
}
Run Code Online (Sandbox Code Playgroud)
那么,我的服务级别是 -
@Service
@Slf4j
public class TransformService {
public void transformXml() {
log.info("Transforming XML");
}
}
Run Code Online (Sandbox Code Playgroud)
我通过右键单击 Package Explorer 中的“TransformXmlTest()”并单击“Run as - JUnit Test”在 STS 中运行测试。(当我使用 Gradle 任务在 STS 外部运行它时,一切看起来都很干净)。
这是完整的日志条目 -
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
2023-10-06 10:00:33.097 INFO Transforming XML | com.dowill.xsl.service.TransformService
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)
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助
abo*_*yko 12
这与 Gradle 及其与 Eclipse 的集成(Buildship)有关。您将在面向 Java 开发人员的普通 Eclipse 中获得相同的行为。
解决方案是将以下内容添加到 build.gradle 中的依赖项中:
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
您还可以使用基于 Eclipse 4.28 而不是最新的 4.29 的 STS 4.20.0 发行版,或者在下面的问题中寻找更多解决方法 - 非常有帮助。还有 Eclipse 4.29 发行版出了什么问题的解释。
更多信息可以在这里找到:https ://github.com/eclipse/buildship/issues/1265
归档时间: |
|
查看次数: |
9392 次 |
最近记录: |