在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的含义。