![](/img/trans.png)
[英]Exception in thread "main" java.lang.NoSuchMethodError: org.junit.platform.commons.util.ReflectionUtils.getDefaultClassLoader()Ljava/lang/ClassLoader;
[英]Hello! Got an error with Junit platform v.5.8.1 java.lang.NoSuchMethodError: org.junit.platform.commons.util.AnnotationUtils.findAnnotation
我遇到了此代码的问题:
@ExtendWith(MockitoExtension.class)
class ApiRestControllerTest {
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
private MockMvc mockMvc;
@InjectMocks
private ApiRestController apiRestController;
@BeforeEach
void setUp() {
mockMvc = MockMvcBuilders
.standaloneSetup(apiRestController)
.build();
}
@Test
void shouldReturnsVersion() throws Exception {
mockMvc.perform(get("/api/v1/version"))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andExpect(content().json(OBJECT_MAPPER.writeValueAsString(new VersionResponse(VERSION))));
}
}
我得到一个错误: 引起:java.lang.NoSuchMethodError: org.junit.platform.commons.util.AnnotationUtils.findAnnotation(Ljava/lang/Class;Ljava/lang/Class;Z)Ljava/util/Optional; 在 org.junit.jupiter.engine.descriptor.DisplayNameUtils.getDisplayNameGenerator(DisplayNameUtils.java:110) 在 org.junit.jupiter.engine.descriptor.DisplayNameUtils.lambda$createDisplayNameSupplierForClass$2(DisplayNameUtils.java:98) 在 org.junit。 jupiter.engine.descriptor.DisplayNameUtils.determineDisplayName(DisplayNameUtils.java:88) 在 org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.(JupiterTestDescriptor.java:69) 在 org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.( ClassBasedTestDescriptor.java:96) 在 org.junit.jupiter.engine.descriptor.ClassTestDescriptor.(ClassTestDescriptor.java:51) 在 org.junit.jupiter.engine.discovery.ClassSelectorResolver.newClassTestDescriptor(ClassSelectorResolver.java:119)
我使用 JUnit 5.8.1 ,但对于较低版本,如 5.7.2 它工作正常,
感谢帮助!
缺少的方法org.junit.platform.commons.util.AnnotationUtils.findAnnotation(Class<?>, Class<A>, boolean)
是在 JUnit Platform 1.8 中引入的。
因此,您需要确保升级到junit-platform-commons
1.8.1。
使用junit-bom
将有助于简化此类升级,以确保您使用所有 JUnit 5 工件的兼容版本。
这对我也有用。 我使用 JUnit 5.8.1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.