我是否需要使用 Kotlin Junit5 和 Spring Boot 将 Spring 注释复制到内部 类?
Should I need to copy Spring annotations to inner classes with Kotlin Junit5 and Spring Boot?
我在 JUnit5 中使用 @Nested 对测试进行主题分组。按照我之前在 Java 和 Kotlin 中使用过的已发布示例和模式。然而,与外部测试 class 关联的 Spring 注释并不像我期望的那样应用于内部 classes。这是错误还是我的错误假设?
我正在使用@SpringBootTest 和@AutoConfigureMocMvc 注释测试Spring 中的RESTful 端点。我想将它们分组为身份验证、获取、post、放置等。我根据过去的经验和示例使用 @Nested 和内部 classes 对它们进行分组。但是,我发现除非我将所有注释从外部测试 class 复制到每个内部 class 声明,否则没有任何效果。我不认为 Java 中存在这种情况,示例中也没有暗示。
失败:
@SpringBootTest
@AutoConfigureMockMvc
class EndpointTest {
// ... @Autowire's, mocks etc...
@Nested
inner class AuthTest {
@Test
fun `should fail with bad auth`() {
// some logic
}
}
}
成功:
@SpringBootTest
@AutoConfigureMockMvc
class EndpointTest {
// ... @Autowire's, mocks etc...
@SpringBootTest
@AutoConfigureMockMvc
@Nested
inner class AuthTest {
@Test
fun `should fail with bad auth`() {
// some logic
}
}
}
我会假设,并且示例似乎支持,内部 class 不应该 需要复制所有注释。我认为 Java 不会。这是关于 Spring 关于 Kotlin 的注释代码吗?
这是意料之中的,因为 类 中 "pseudo-inheritance" 的注释在 Spring 框架中尚不支持(无论是 Java 还是 Kotlin)。
详情请看下面的回答:
我在 JUnit5 中使用 @Nested 对测试进行主题分组。按照我之前在 Java 和 Kotlin 中使用过的已发布示例和模式。然而,与外部测试 class 关联的 Spring 注释并不像我期望的那样应用于内部 classes。这是错误还是我的错误假设?
我正在使用@SpringBootTest 和@AutoConfigureMocMvc 注释测试Spring 中的RESTful 端点。我想将它们分组为身份验证、获取、post、放置等。我根据过去的经验和示例使用 @Nested 和内部 classes 对它们进行分组。但是,我发现除非我将所有注释从外部测试 class 复制到每个内部 class 声明,否则没有任何效果。我不认为 Java 中存在这种情况,示例中也没有暗示。
失败:
@SpringBootTest
@AutoConfigureMockMvc
class EndpointTest {
// ... @Autowire's, mocks etc...
@Nested
inner class AuthTest {
@Test
fun `should fail with bad auth`() {
// some logic
}
}
}
成功:
@SpringBootTest
@AutoConfigureMockMvc
class EndpointTest {
// ... @Autowire's, mocks etc...
@SpringBootTest
@AutoConfigureMockMvc
@Nested
inner class AuthTest {
@Test
fun `should fail with bad auth`() {
// some logic
}
}
}
我会假设,并且示例似乎支持,内部 class 不应该 需要复制所有注释。我认为 Java 不会。这是关于 Spring 关于 Kotlin 的注释代码吗?
这是意料之中的,因为 类 中 "pseudo-inheritance" 的注释在 Spring 框架中尚不支持(无论是 Java 还是 Kotlin)。
详情请看下面的回答: