如何在单个JUnit测试中运行两个Spring Boot微服务?

时间:2017-12-18 16:55:16

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

我有两个Spring Boot REST微服务,让他们称之为A和B.我们也假设A对B进行REST调用。

我想在单个JUnit测试中在A和B之间test the integration。也就是说,我想编写一个测试,确保从A到B的通信和配置是有序的。

我知道我可以在Spring"内置"中运行一个微服务。在我的测试中使用@SpringBootTest注释测试Web服务器。

是否可以以类似的方式在一次测试中同时运行A和B?

1 个答案:

答案 0 :(得分:4)

我认为通过从我的JUnit测试中删除@SpringBootTest并使用SpringApplicationBuilder实例化两个微服务,我已经成功了。

A是Demo1Application,B是Demo2Application

@Test
public void test1() {
    HashMap<String, Object> props1 = new HashMap<>();
    props1.put("server.port", 8092);

    SpringApplicationBuilder builder1 = new SpringApplicationBuilder(Demo1Application.class);
    builder1
        .properties(props1)
        .run(new String[]{""});

    HashMap<String, Object> props2 = new HashMap<>();
    props2.put("server.port", 8093);

    SpringApplicationBuilder builder2 = new SpringApplicationBuilder(Demo2Application.class);
    builder2
    .properties(props2)
        .run(new String[]{""});
}