![](/img/trans.png)
[英]Spring Boot integration tests cannot reach application.properties file
[英]Spring Boot Application cannot run integration tests for 2 controllers
我有一个使用 SpringBoot 2.1.7 用 Java 编写的 REST API。 它有 2 个控制器,每个 controller 都有集成测试。 控制器位于同一 controller 文件夹中的单独文件中
每个 controller 的集成测试也在单独的文件中。 如果我注释掉一组 controller 测试,则集成测试成功。 但是,如果我尝试为两个控制器运行所有集成测试,则会出现多个故障并出现相同的错误:
java.lang.IllegalStateException:配置错误:发现@BootstrapWith 的多个声明用于测试 class [com.fedex.ground.transportation.fxglhlschedulesvc.Z594C103F2C6E01E0C1DAZ.059F0E04C1DAZ. ITF 设施控制器]
java.lang.IllegalStateException:配置错误:发现@BootstrapWith 的多个声明用于测试 class [com.fedex.ground.transportation.fxglhlschedulesvc.Z594C103F2C6E01E0C1DAZ.059F0E04C1DAZ. 它调度控制器]
这似乎是一个配置问题。 这就是我配置测试文件的方式:对于设施 Controller
@ActiveProfiles("local")
@AutoConfigureMockMvc
@SpringBootTest(classes = {FxgLhlScheduleSvcApplication.class, RedisConfig.class})
对于时间表 Controller
@ActiveProfiles("local")
@AutoConfigureMockMvc
@SpringBootTest(classes = FxgLhlScheduleSvcApplication.class)
我尝试添加这些配置注释,但得到相同的错误:
@WebMvcTest(ScheduleController.class)
@ContextConfiguration(classes=FxgLhlScheduleSvcApplication.class)
@WebMvcTest(FacilityController.class)
@ContextConfiguration(classes = {FxgLhlScheduleSvcApplication.class, RedisConfig.class})
对于单独文件中的 2 个控制器,配置注释应该是什么。 控制器之间根本没有关联。
集成测试使用相同的 ApplicationContext(除非特别设置为不使用)。 问题在于其中一个测试可以在上下文中进行更改,这会影响其他集成测试,例如更改某些 bean 的 state。
出于这个原因,有一个注释@DirtiesContext
在这个特定的测试之后恢复/清除对上下文的影响。
此注释的计算成本很高,因此您应该仅在必要时使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.