【问题标题】:how to run spring-boot integration tests with multiple embeded servers with gradle如何使用带有 gradle 的多个嵌入式服务器运行 spring-boot 集成测试
【发布时间】:2016-11-03 15:43:27
【问题描述】:

我对我的 Spring Boot 应用程序进行了一些集成测试。基于依赖项(和classpath jars)spring boot选择一个服务器启动:(tomcat是只有spring-boot-starter-web,undertow如果有spring-boot-starter-undertow或者jetty如果有spring-boot-启动码头)

我正在编写一个可以在许多不同服务器上工作的过滤器。我对任何服务器都没有编译依赖,但我想在许多服务器上测试我的代码。我该怎么做?

当然,一种方法是让 gradle 脚本根据一些环境变量设置依赖关系,然后使用不同的环境变量值调用 gradle test 几次。有没有更简单的方法,所以我可以一次测试所有内容?就像在测试中以编程方式启动服务器?还是使用一些 gradle/spring 插件?

【问题讨论】:

    标签: java spring gradle spring-boot integration-testing


    【解决方案1】:

    我的建议是为所有三个服务器添加测试范围的依赖项,但在您的测试代码中创建三个单独的 Spring Boot 应用程序类,每个应用程序类禁用 EmbeddedServletContainerAutoConfiguration 并导入适当的服务器配置:

    @Profile("tomcat")
    @SpringBootApplication(exclude = EmbeddedServletContainerAutoConfiguration.class)
    @Import(EmbeddedServletContainerAutoConfiguration.EmbeddedTomcat.class)
    public class TomcatApplication {
        public static void main(String[] args) {
            TomcatApplication.run(TomcatApplication.class, args);
        }
    }
    
    @Profile("undertow")
    @SpringBootApplication(exclude = EmbeddedServletContainerAutoConfiguration.class)
    @Import(EmbeddedServletContainerAutoConfiguration.EmbeddedUndertow.class)
    public class UndertowApplication {
        public static void main(String[] args) {
            UndertowApplication.run(UndertowApplication.class, args);
        }
    }
    
    @Profile("jetty")
    @SpringBootApplication(exclude = EmbeddedServletContainerAutoConfiguration.class)
    @Import(EmbeddedServletContainerAutoConfiguration.EmbeddedJetty.class)
    public class JettyApplication {
        public static void main(String[] args) {
            JettyApplication.run(JettyApplication.class, args);
        }
    }
    

    然后,使用适当的@ActiveProfiles 集编写您的测试,您应该准备好了。

    【讨论】:

      猜你喜欢
      • 2015-10-03
      • 2014-12-12
      • 2016-01-27
      • 2016-06-12
      • 2016-08-26
      • 1970-01-01
      • 2017-10-30
      • 2015-08-02
      • 2020-02-10
      相关资源
      最近更新 更多