我使用默认的 Tomcat 嵌入式容器。但是,在我的一些测试中,我使用 Wiremock(在下面使用 Jetty)。这使我的集成测试针对 Jetty 服务器而不是 Tomcat 运行。
有什么方法可以强制 Spring Boot 坚持使用 Tomcat 吗?
最佳答案
正如 Stéphane Nicoll 所说 here你应该定义一个空的 TomcatEmbeddedServletContainerFactory
@Bean
简单地添加这样的 bean 对我来说是不够的。我得到了“多 bean ”异常。当我将它添加到自定义测试启动器时,我只需要确保它是在 EmbeddedServletContainerAutoConfiguration
解析发生之前添加的,即:
@Configuration
@AutoConfigureBefore(EmbeddedServletContainerAutoConfiguration.class)
public class ForceTomcatAutoConfiguration {
@Bean
TomcatEmbeddedServletContainerFactory tomcat() {
return new TomcatEmbeddedServletContainerFactory();
}
}
编辑:在 Spring Boot 2.0 中,这对我有用:
@Configuration
@AutoConfigureBefore(ServletWebServerFactoryAutoConfiguration.class)
public class ForceTomcatAutoConfiguration {
@Bean
TomcatServletWebServerFactory tomcat() {
return new TomcatServletWebServerFactory();
}
}
关于java - 如何强制 Spring Boot 在集成测试中使用 Tomcat 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35844784/