0
當經常編寫集成測試時,需要在一個臨時端口上啓動某個服務器(例如redis,zookeeper),然後將該端口作爲屬性傳遞給Spring。問題是,在實際使用的端口是未知的服務器之前啓動,因此無法通過註釋進行傳遞:春季啓動測試 - 如何在啓動之前啓動嵌入式服務器?
@IntegrationTest(["redis.port=???"])
class RedisTest {
@Before
before(){
int port = startRedis(
}
}
什麼是慣用的方式來實現這一目標?理想情況下,我希望將其納入junit規則。
這裏的東西爲我的作品,但(通過靜態變量通過口)不好看:
@IntegrationTest(initializers=Initializer.class)
public class RedisTest {
public static int port;
public static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
public void initialize(ConfigurableApplicationContext ctx){
port = startRedis()
EnvironmentTestUtils.addEnvironment(ctx, "redisPort=" + port)
}
}
}
這是不相關的問題...我的問題與環境中的其他服務器相關,而不是在Spring Boot中嵌入http。 – mabn