java - 如何强制 Spring Boot 在集成测试中使用 Tomcat 服务器?

标签 java spring-boot

我使用默认的 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/

相关文章:

java - 如何从 spring boot jar 中排除资源文件?

java - openapi springboot 服务器生成器是否有损坏的线程模型?

spring-boot - 具有 Spring-Boot 和发布管理的微服务

java - 如何在springframework中查找注解的文档

java - 使用 JaCoCo 和 spring-boot-maven-plugin 生成代码覆盖率

java - 所选值保留保存在带有单选按钮 Android 的 Dialogfragment 中

java - 无法理解 java 回文输出

java - 我的泛型类型转换有什么问题?

java - 为 aspectj 运行 JDK8

java - java中字符串数组的重复元素