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

问题描述 投票:2回答:1

我有几个我的春季启动应用程序的实例,它同时与DB做了一些工作。每个实例都在单独的JVM中运行。 这是用Java编写测试以在一个JVM上测试它的方法吗?如下:

  1. 设置一些嵌入式数据库用于测试目的,甚至只是模拟它。
  2. 启动我的Spring启动应用程序的2-5个实例
  3. 等一段时间
  4. 停止所有已启动的实例
  5. 验证数据库并检查是否满足所有条件。

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

java spring unit-testing testing spring-boot
1个回答
5
投票

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

我做了类似的事

@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>>() {
                });

here的来源。

© www.soinside.com 2019 - 2024. All rights reserved.