gpt4 book ai didi

java - Spring Boot 集成测试在一个接一个运行时失败

转载 作者:搜寻专家 更新时间:2023-11-01 03:17:25 25 4
gpt4 key购买 nike

我有一个 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)));
}

网络集成测试:

@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 数据库的更改。我通过使用 @DirtiesContext 注释我的类来解决它,这将在您的测试后让 Spring 重新加载 ApplicationContext。

关于java - Spring Boot 集成测试在一个接一个运行时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44506227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com