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

时间:2017-12-18 10:55:02

标签: java spring unit-testing testing spring-boot

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

  1. 设置一些嵌入式数据库用于测试目的,甚至只是模拟它。
  2. 启动我的Spring启动应用程序的2-5个实例
  3. 等一下
  4. 停止所有已启动的实例
  5. 验证数据库并检查是否符合所有条件。
  6. 每个实例都有自己的上下文和类路径。
    我认为我可以通过一些shell脚本方案实现这一点,但我想用Java实现它 这里最好的方法是什么?

1 个答案:

答案 0 :(得分: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来源。