@SpringBootTest@SpringBootTest ์ ๋ํ
์ด์
์ Spring Boot ์ ํ๋ฆฌ์ผ์ด์
์ ํตํฉ ํ
์คํธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ์ ๋ํ
์ด์
์ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ปจํ
์คํธ๋ฅผ ๋ก๋ํ๊ณ , ์ค์ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๋์ผํ ํ๊ฒฝ์์ ํ
์คํธ๋ฅผ ์ํํ ์ ์๊ฒ ํด์ค๋๋ค.@SpringBootTest๋ ์ผ๋ฐ์ ์ผ๋ก ๋จ์ ํ
์คํธ์ ๋ฌ๋ฆฌ, ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ํ ๋ ์ด์ด(์น, ์๋น์ค, ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฑ)๋ฅผ ํตํฉํ์ฌ ํ
์คํธํฉ๋๋ค.webEnvironment ์์ฑwebEnvironment๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ํ
์คํธ ์ค์ ์ด๋ค ๋ฐฉ์์ผ๋ก ์น ํ๊ฒฝ์ ์ค์ ํ ์ง๋ฅผ ์ ์ํ๋ ์์ฑ์
๋๋ค.WebEnvironment.MOCK: ๊ฐ์ง(๋ชจํน๋) ์๋ธ๋ฆฟ ํ๊ฒฝ์ ์ค์ ํฉ๋๋ค. ์๋ธ๋ฆฟ ์ปจํ
์ด๋ ์์ด MVC ํ
์คํธ๋ฅผ ์ํํฉ๋๋ค.WebEnvironment.RANDOM_PORT: ํ
์คํธ ์ค์ ๋๋คํ ํฌํธ๋ก ์ค์ ๋ด์ฅ ์๋ฒ(Tomcat ๋ฑ)๋ฅผ ์์ํฉ๋๋ค.WebEnvironment.DEFINED_PORT: application.properties์ ์ ์๋ ํฌํธ(์ผ๋ฐ์ ์ผ๋ก 8080)์์ ๋ด์ฅ ์๋ฒ๋ฅผ ์์ํฉ๋๋ค.WebEnvironment.NONE: ์น ํ๊ฒฝ์ ์ค์ ํ์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ Spring ์ ํ๋ฆฌ์ผ์ด์
์ปจํ
์คํธ๋ฅผ ๋ก๋ํฉ๋๋ค.SpringBootTest.WebEnvironment.RANDOM_PORTRANDOM_PORT๋ ์ค์ ๋ก ๋ด์ฅ๋ ์น ์๋ฒ(Tomcat, Jetty ๋ฑ)๋ฅผ ์์ํ๊ณ , ํ
์คํธ ์ ๋๋คํ ํฌํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํฉ๋๋ค.@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyIntegrationTest {
@LocalServerPort
private int port;
@Test
public void testApiEndpoint() {
String url = "<http://localhost>:" + port + "/api/some-endpoint";
// ์ค์ HTTP ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต์ ํ์ธํ๋ ๋ก์ง
}
}
TestRestTemplate์ Spring Boot์ ํ
์คํธ ํ๊ฒฝ์์ RESTful ์น ์๋น์ค๋ฅผ ์ฝ๊ฒ ํ
์คํธํ ์ ์๊ฒ ํด์ฃผ๋ ์ ํธ๋ฆฌํฐ ํด๋์ค์
๋๋ค. Spring Boot์ ํ
์คํธ ํ๋ ์์ํฌ์์ ์ ๊ณต๋๋ฉฐ, REST API์ ์๋ํฌ์ธํธ๋ฅผ ํ
์คํธํ๊ณ ๊ฒ์ฆํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. TestRestTemplate์ ์ค์ ์น ์๋ฒ ์์ด๋ ์๋ฒ์์ HTTP ํต์ ์ ์๋ฎฌ๋ ์ด์
ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
TestRestTemplate์ ์ฃผ์ ํน์งTestRestTemplate์ ์ค์ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์, RESTful ์๋น์ค์ ๋์์ ํ
์คํธํ ์ ์์ต๋๋ค.