启动多个Spring Boot应用程序进行测试

时间:2018-10-12 12:26:52

标签: spring-boot

我在这里指的是答案

Instantiate multiple spring boot apps in test

因此,测试使用SpringApplicationBuilder创建和运行应用程序。例如。

@Test
public void testSomething() {
    SpringApplicationBuilder app1 = new SpringApplicationBuilder(com.app1.Application.class)
      .properties("server.port=8080");

    app1.run();

    SpringApplicationBuilder app2 = new SpringApplicationBuilder(com.app2.Application.class)
      .properties("server.port=8081");

    app2.run();
}

我遇到的问题是尽管我根据上述属性设置了服务器端口,因为我已经在我的application.yml中设置了服务器端口,但似乎两个应用程序都采用了此设置,因此存在端口冲突。我该怎么解决?

application.yml

server:
    ssl:
        ..stuff..
    port: 8443

1 个答案:

答案 0 :(得分:1)

不设置属性...在运行命令中使用命令行参数:

SpringApplicationBuilder app1 = new SpringApplicationBuilder(com.app1.Application.class);

    app1.run("server.port=8080");

SpringApplicationBuilder app2 = new SpringApplicationBuilder(com.app2.Application.class);

    app2.run("server.port=8081");

命令行参数优先于应用程序属性。这样做的结果是,应用程序属性的创建方式完全相同,但是这些属性将覆盖所有现有相同的属性。