더북(TheBook)

4.3.1 임의의 포트로 서버 실행하기

앞서 언급했듯이 기본적으로 서버는 8080 포트로 시작한다. 8080 포트로 수신 대기 중인 서버가 없는 상황에서 개별 테스트를 한 번에 하나씩 실행한다면 문제가 없다. 하지만 필자와 비슷한 상황이라면 아마도 로컬 머신의 8080 포트는 항상 사용 중일 것이다. 이때 테스트는 포트 충돌로 서버를 시작하지 못해 실패할 것이다. 분명 이보다는 좋은 방법이 있을 것이다.

다행히 스프링 부트가 임의의 포트로 서버를 시작하는 것은 어렵지 않다. 한 가지 방법은 server.port 프로퍼티를 0으로 설정하여 스프링 부트가 사용 가능한 임의의 포트를 선택하게 하는 것이다. @WebIntegrationTest 애너테이션은 value 속성으로 String 배열을 받을 수 있다. 배열의 각 항목은 name=value 형태의 이름·값 쌍으로 구성하며 테스트에 사용할 프로퍼티를 설정한다. server.port를 설정하려면 다음과 같이 @WebIntegrationTest 애너테이션을 추가한다.


@WebIntegrationTest(value={ “server.port=0” })

프로퍼티를 하나만 설정한다면 다음과 같이 간단하게 작성할 수도 있다.


@WebIntegrationTest(“server.port=0”)

value 속성으로 프로퍼티를 설정하는 방법은 편리하지만, @WebIntegrationTest 애너테이션은 더 표현하기 쉬운 방법으로 임의의 포트에서 서버를 시작하도록 요청하는 randomPort 속성도 제공한다. 다음과 같이 randomPort 속성을 true로 설정하여 임의의 포트를 요청하면 된다.


@WebIntegrationTest(randomPort=true)

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.