一尘不染

在测试中实例化多个Spring Boot应用程序

spring-boot

我有几个我的Spring Boot应用程序实例,它们与DB并行进行一些工作。每个实例都在单独的JVM中运行。
是否可以用Java编写测试以在一个JVM上进行测试的方法?如下所示:

  1. 设置一些嵌入式DB进行测试,甚至只是对其进行模拟。
  2. 启动我的Spring Boot应用程序的2-5个实例
  3. 等一下
  4. 停止所有启动的实例
  5. 验证数据库并检查是否满足所有条件。

每个实例都有其自己的上下文和类路径。
我认为我可以通过一些Shell脚本实现这一目标,但是我想用Java实现。
最好的方法是什么?


阅读 327

收藏
2020-05-30

共1个答案

一尘不染

您可以使用不同的端口多次运行它们。

我做了类似的事情

@RunWith(SpringJUnit4ClassRunner.class)
public class ServicesIntegrationTest {

    private RestTemplate restTemplate = new RestTemplate();

    @Test
    public void runTest() throws Exception {
        SpringApplicationBuilder uws = new SpringApplicationBuilder(UserWebApplication.class)
                .properties("server.port=8081",
                        "server.contextPath=/UserService",
                        "SOA.ControllerFactory.enforceProxyCreation=true");
        uws.run();

        SpringApplicationBuilder pws = new SpringApplicationBuilder(ProjectWebApplication.class)
                .properties("server.port=8082",
                        "server.contextPath=/ProjectService",
                        "SOA.ControllerFactory.enforceProxyCreation=true");
        pws.run();

        String url = "http://localhost:8081/UserService/users";
        ResponseEntity<SimplePage<UserDTO>> response = restTemplate.exchange(
                url,
                HttpMethod.GET,
                null,
                new ParameterizedTypeReference<SimplePage<UserDTO>>() {
                });

这里的来源。

2020-05-30