繁体   English   中英

你好! Junit 平台 v.5.8.1 出现错误 java.lang.NoSuchMethodError: org.junit.platform.commons.util.AnnotationUtils.findAnnotation

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM