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

How to exclude bootstrapping in META-INF/spring.factories from java tests

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

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

但 AWSConfig 仍在 运行ning(并且失败)。如何从测试中排除自举配置 class?

测试设置:

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

快速解决方案:

将此注释添加到测试 Class 排除了 bootstrapping:

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

替代解决方案:

基于How to disable Eureka and Spring Cloud Config in a WebMvcTest?

我把注释改成了@TestPropertySource(locations = "classpath:application-controller-tests.properties")

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

进一步思考

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