我有一个SpringBootTest,它在@SpringBootTest
上具有以下配置:
@ContextConfiguration(initializers = RandomPortPropertySourceContextInitializer.class)
RandomPortPropertySourceContextInitializer
如下所示:
public class RandomPortPropertySourceContextInitializer implements
ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
RandomPortPropertySource randomPortPropertySource = new RandomPortPropertySource("randomPort");
applicationContext.getEnvironment().getPropertySources().addAfter(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, randomPortPropertySource);
}
}
然后我可以在测试配置文件中使用从其分配的属性,例如:
oauth2.authorizationUri: http://localhost:${randomPort.wireMock}/mock/authorize
此约定取自与Spring相关的各种文章,用于在测试启动时为帮助程序分配随机可用的端口。所有这些在Spring Boot 1.5.x,2.0等中都可以正常工作,但是一旦升级到Spring Boot 2.1.0,该初始化程序似乎会在以后运行,现在我在启动时遇到错误,例如:
Caused by: java.lang.NumberFormatException: For input string: "${randomPort.app}"
初始化程序的运行顺序已发生某些变化,这导致此用例失败。如果删除配置文件用法以免启动失败,则初始化程序确实会运行,但那时为时已晚。
我尝试在发行说明中查找有关此更改的信息,但没有发现任何问题。有任何想法/建议吗?