40.3.3 使用随机端口

如果你需要为测试启动一个完整运行的服务器,我们建议你使用随机端口。如果你使用@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT),每次运行测试都会为你分配一个可用的随机端口。

@LocalServerPort注解用于注入测试用例实际使用的端口,简单起见,需要发起REST调用到启动服务器的测试可以额外@Autowire一个TestRestTemplate,它可以解析到运行服务器的相关链接:

  1. import org.junit.*;
  2. import org.junit.runner.*;
  3. import org.springframework.boot.test.context.web.*;
  4. import org.springframework.boot.test.web.client.*;
  5. import org.springframework.test.context.junit4.*;
  6. import static org.assertj.core.api.Assertions.*
  7. @RunWith(SpringRunner.class)
  8. @SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
  9. public class MyWebIntegrationTests {
  10. @Autowired
  11. private TestRestTemplate restTemplate;
  12. @Test
  13. public void exampleTest() {
  14. String body = this.restTemplate.getForObject("/", String.class);
  15. assertThat(body).isEqualTo("Hello World");
  16. }
  17. }