[스프링] 스프링 부트 테스트에서의 HTTP 통신 테스트

스프링 애플리케이션을 개발할 때는 HTTP 통신이 중요한 부분입니다. 이때 스프링 부트에서 제공하는 @SpringBootTest 어노테이션을 사용하여 HTTP 통신을 테스트할 수 있습니다.

1. 스프링 부트 테스트 환경 설정

먼저, 스프링 부트 테스트에서 HTTP 통신을 테스트하기 위해 @SpringBootTest 어노테이션을 사용하여 테스트 환경을 설정합니다.

import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.test.context.junit.jupiter.SpringExtension;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class MyApplicationTests {

    @LocalServerPort
    private int port;

    private final TestRestTemplate restTemplate = new TestRestTemplate();

    // 테스트 메서드 작성
}

위 코드에서 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 어노테이션은 랜덤 포트를 사용하는 웹 환경에서 테스트를 수행함을 나타냅니다.

2. HTTP 통신 테스트

이제 실제 HTTP 통신을 테스트할 수 있는 메서드를 작성합니다.

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class MyApplicationTests {

    @LocalServerPort
    private int port;

    private final TestRestTemplate restTemplate = new TestRestTemplate();

    @Test
    void testHttpRequest() {
        String url = "http://localhost:" + port + "/api/endpoint";
        String expectedResponse = "Expected Response";

        String actualResponse = restTemplate.getForObject(url, String.class);

        assertEquals(expectedResponse, actualResponse);
    }
}

위 코드에서 testHttpRequest 메서드는 /api/endpoint 엔드포인트로 GET 요청을 보내고, 예상한 응답과 실제 응답을 비교하여 테스트를 수행합니다.

3. 실행 및 결과 확인

이제 만든 HTTP 통신 테스트를 실행하고 결과를 확인합니다. 테스트는 testHttpRequest 메서드가 성공적으로 통과되는지 확인해야 합니다.

이렇게 스프링 부트 테스트를 사용하여 HTTP 통신을 테스트할 수 있습니다. 이를 통해 애플리케이션의 HTTP 통신 기능이 정상적으로 동작하는지 확인할 수 있습니다.

참고 자료