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

SpringBootTest support for running diffent SpringBoot Application Instances

借助 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 实现与 运行 针对 运行ning 应用程序实例的单元测试相同的效果。

可能很简单,但我还没学会。

我在 Junit 测试中使用 @ContextConfigurationSpringRunner.class 作为测试运行器实现此目的的方法:

@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