Spring Boot
스프링 부트 HTTP 동작 테스트
JJJaewon
2021. 9. 9. 21:31
반응형
ToyController
package com.example.toy1.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ToyController {
@GetMapping("/toy")
public String getHello() {
return "hello toy";
}
}
ToyControllerTest
package com.example.toy1.controller;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.server.LocalServerPort;
import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ToyControllerTest {
@LocalServerPort
private int port;
@Autowired
private TestRestTemplate restTemplate;
@Test
public void isShowHelloToy() throws Exception {
assertThat(this.restTemplate.getForObject("http://localhost:" + port + "/toy", String.class))
.contains("hello toy");
}
}
아주 간단하게 만들어 봤다. RAMDOM_PORT는 임의의 포트로 서버를 시작하여 테스트 환경에서 충돌을 방지한다.
TestRestTemplate를 사용하면 서버를 구동하여 테스트를 하게 된다. 그러므로 서버를 구동하지 않고 테스트를 하고 싶으면 MockMvc를 이용하면 된다.
참고
반응형