如何从java测试中排除META-INF/spring.factores中的自举



在resources/META-INF/spring.factories中有这一行:org.springframework.cloud.bootstrap.BootstrapConfiguration=org.path.to.AWSConfig

运行AWSConfig时,使用@RunWith(SpringRunner.class)执行的集成测试失败。测试不需要AWSConfig即可运行。在SO上尝试了许多排除AWSConfig的方法,包括:

  • @TestPropertySource(properties={"spring.autoconfigure.exclude=org.path.to.AWSConfig"})
  • @EnableAutoConfiguration(exclude = { AWSConfig.class})
  • 设置spring.cloud.config.enabled=false

但是AWSConfig仍在运行(并且失败(。如何从测试中排除引导的配置类?

测试设置:

@RunWith(SpringRunner.class)
@WebMvcTest(UnitLeaderRequestController.class)
@WithMockUser
public class UnitLeaderRequestControllerTest {
@Autowired
MockMvc mvc;
...
}

快速解决方案:

将此注释添加到测试类排除了引导:

@TestPropertySource(properties={"spring.cloud.bootstrap.enabled = false"})

替代解决方案:

基于如何在WebMvcTest中禁用Eureka和Spring Cloud配置?

我将注释更改为@TestPropertySource(locations = "classpath:application-controller-tests.properties")

,在/resources中创建了application-controller-tests.properties,并将spring.cloud.bootstrap.enabled = false添加到文件中,以便多个测试类可以从一个位置使用排除。

进一步思考

一个更好的解决方案可能是完全停止使用META-INF/spring.factores,并使用bootstrap-{env}.yml文件。我不确定从项目中删除META-INF/spring.factores的含义。

相关内容

  • 没有找到相关文章

最新更新