SpringBootTest支持运行不同的SpringBoot应用程序实例

时间:2017-05-04 16:59:11

标签: spring-boot spring-test spring-boot-test

使用SpringBoot,我可以轻松地运行与具有不同配置的不同实例相同的应用程序,例如:

@SpringBootApplication
@ComponentScan({"..."})
public class Application {

    public static void main(String[] args) {
        start(Application.class)
            .properties("notification.sender.app.name=SomeApp", "notification.this.app.name =AnotherApp", "server.port=${first.port:9010}").run(args);
        start(Application.class)
            .properties("first.app.name=AnotherApp", "second.app.name =SomeApp", "server.port=${second.port:9020}").run(args);
    }

    private static SpringApplicationBuilder start(Class<?>... sources) {
        return new SpringApplicationBuilder(sources).bannerMode(Mode.OFF);
    }
}

这非常棒,特别适用于测试应用程序间的通信内容。

我正在努力实现与@SpringBootTest相同的功能,以针对正在运行的Applications实例运行单元测试。

可能很容易,但我还没有。

1 个答案:

答案 0 :(得分:1)

我通过@ContextConfigurationSpringRunner.class作为测试跑步者在Junit测试中实现此目的:

@Before
public void startUp() {
    someAppContext = new SpringApplicationBuilder(Application.class)
            .properties("notification.app.name=SomeApp", "server.port=" + someAppPort).run();
    anotherAppContext = new SpringApplicationBuilder(Application.class)
            .properties("notification.app.name=AnotherApp", "server.port=" + anotherAppPort).run();
}

其中someAppPortanotherAppPort配置了@Value