spring-boot - 我是否需要使用 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
推荐阅读
- reactjs - 在响应中获取 twitter api 时出错但在邮递员中工作
- javascript - 创建用于测试的模拟 JWT 令牌
- javascript - nextjs 中的自定义语言环境位置
- python - 正则表达式匹配尊称,后跟全名
- html - 角度表格选择并突出显示表格的所有列和行
- javascript - Firefox 检查器未捕获的 TypeError
- sql - 从最后一行获取滞后值,其中其他列的值 = 'n'
- python - 具有多租户支持、角色和操作日志的 Django 管理员?
- python - 如果令牌在字符内,则将字符串添加到字符串的令牌
- apache-flink - 如何在 flink 中使用 multiset?