我是否需要使用 Kotlin Junit5 和 Spring Boot 将 Spring 注释复制到内部类?



我在 JUnit5 中使用@Nested对测试进行主题分组。以下是已发布的示例和我之前在 Java 和 Kotlin 中使用的模式。但是,与外部测试类关联的 Spring 注释并不像我预期的那样适用于内部类。这是一个错误还是我的错误假设?

我正在使用@SpringBootTest和@AutoConfigureMocMvc注释在 Spring 中测试一个 RESTful 端点。 我想将它们分组为身份验证、获取、发布、放置等内容。 我根据过去的经验和示例使用@Nested类和内部类对它们进行分组。但是,我发现除非我将外部测试类中的所有注释复制到每个内部类声明,否则没有任何效果。 我不相信 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
}
}
}

我假设,并且示例似乎支持,内部类不需要复制所有注释。我不认为在Java中是这样。这是关于 Kotlin 的 Springs 注释代码吗?

这是意料之中的,因为Spring框架还不支持从封闭类中"伪继承"注释(Java和Kotlin都不支持(。

有关详细信息,请参阅以下答案:https://stackoverflow.com/a/44227179/388980

最新更新