繁体   English   中英

Spring Boot集成测试在彼此运行后失败

[英]Spring Boot integration tests failing when run after one another

我有一个Spring Boot集成测试和一个Spring Boot Web集成测试。 单独运行时,两个测试都会通过 但是,当作为套件的一部分运行时,第二次执行的测试总是失败。 每个测试都启动(并拆除)我的应用程序,反过来,我的h2数据库。 我已经尝试了交换测试的顺序,并且总是后一个测试失败。

我该怎么做才能确保这些测试是独立的/不会相互影响?

注意:我正在使用类注释@RunWith(SpringRunner.class)@SpringBootTest进行两个测试,Web集成测试将参数webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT传递给后一个注释。

整合测试:

@Test
public void testFindAll() {
    List<Object> objects = objectRepository.findAll();
    assertThat(objects.size(), is(greaterThanOrEqualTo(0)));
}

Web集成测试:

@Test
public void testListAll() throws IOException {
    TestRestTemplate testRestTemplate = new TestRestTemplate();
    ResponseEntity<String> responseEntity = testRestTemplate.getForEntity("url/api/v1/objects", String.class);

    assertThat(responseEntity.getStatusCode(), equalTo(OK));

    ObjectMapper objectMapper = new ObjectMapper();
    JsonNode responseJson = objectMapper.readTree(responseEntity.getBody());

    assertThat(responseJson.isMissingNode(), is(false));
    assertThat(responseJson.toString(), equalTo("[]"));
}

虽然我的测试涉及对嵌入式H2 DB的更改,但我遇到了类似的问题。 我通过使用@DirtiesContext注释我的类来解决它。在测试之后,这将有Spring重载ApplicationContext。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM