스프링 부트 테스트 - 내장 서버 랜덤 포트로 띄우기

2021. 4. 22. 03:20 Spring Framework/Spring boot3

 

스프링 부트 테스트 - 내장 서버 랜덤 포트로 띄우기

 

👉 Dependency

spring-boot 2.2.5.RELEASE
junit 4.12

 

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class WebtoonApiControllerTest {

    @LocalServerPort
    private int port;

    @Test
    public void printPort() throws Exception {
        System.out.println(port);
        assertNotEquals(port, 0);
    }
    
    @Autowired
    private TestRestTemplate restTemplate;
    
    @Test
    // Do some test...
}

 

📑 WebEnvironment.RANDOM_PORT

@SpringBootTest webEnvironment 속성은 테스트의 웹 환경을 설정하는 속성이며 기본값은 SpringBootTest.WebEnvironment.MOCK이다.

WebEnvironment.MOCK은 실제 서블릿 컨테이너를 띄우지 않고 서블릿 컨테이너를 mocking한것이 실행된다.

이 속성값을 사용할때는 보통 MockMvc를 주입받아 테스트한다.

 

다시 포스팅의 주제로 돌아가서 스프링 부트의 내장 서버를 랜덤 포트로 띄우려면 webEnvironment를 SpringBootTest.WebEnvironment.RANDOM_PORT로 설정하면 된다.

이 설정은 실제로 테스트를 위한 서블릿 컨테이너를 띄운다.

WebEnvironment.MOCK을 사용할때와는 달리 TestRestTemplate를 주입받아 테스트한다.

 

printPort() 실행 결과

 

출처 : atoz-develop.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%82%B4%EC%9E%A5-%EC%84%9C%EB%B2%84-%EB%9E%9C%EB%8D%A4-%ED%8F%AC%ED%8A%B8%EB%A1%9C-%EB%9D%84%EC%9A%B0%EA%B8%B0?category=869242