Home
>
Spring
>
๐[Spring] `@SpringBootTest` ์ ๋
ธํ
์ด์
Spring
Framework
# ๐[Spring] `@SpringBootTest` ์ ๋
ธํ
์ด์
.
- `@SpringBootTest` ์ ๋
ธํ
์ด์
์ Spring Boot ์ ํ๋ฆฌ์ผ์ด์
์์ ํตํฉ ํ
์คํธ๋ฅผ ์ํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ ๋ํ
์ด์
์
๋๋ค.
- ์ด ์ ๋
ธํ
์ด์
์ ํ
์คํธ ํด๋์ค์์ Spring Application Context๋ฅผ ๋ก๋ํ๊ณ , ์ค์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ฒด ๋๋ ๋ถ๋ถ์ ์ธ ํ๊ฒฝ์ ์๋ฎฌ๋ ์ด์
ํ์ฌ ํ
์คํธํ ์ ์๊ฒ ํฉ๋๋ค.
- ์ฃผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๋ฐ์ ์ธ ๊ธฐ๋ฅ์ ํ
์คํธํ๊ฑฐ๋ ์ฌ๋ฌ ๋ ์ด์ด(์: ์๋น์ค, ๋ ํฌ์งํ ๋ฆฌ ๋ฑ) ๊ฐ์ ์ํธ์์ฉ์ ๊ฒ์ฆํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
## 1๏ธโฃ ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ์ฌ์ฉ ๋ฐฉ์.
- **1. Spring Application Context ๋ก๋**
- `@SpringBootTest` ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ฒด ์ปจํ
์คํธ๋ฅผ ๋ก๋ํฉ๋๋ค.
- ์ด ์ปจํ
์คํธ๋ ์ค์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ๋ํ ๋์ ๋์ผํ๊ฒ ์ค์ ๋์ด, ํ
์คํธ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์
์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ๊ฒ์ฆํ ์ ์์ต๋๋ค.
- **2. ํ
์คํธ ํ๊ฒฝ ์ค์ **
- `@SpringBootTest` ์ ๋
ธํ
์ด์
์ ๋ค์ํ ์์ฑ์ ํตํด ํ
์คํธ ํ๊ฒฝ์ ์ค์ ํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด, ํน์ ํ๋กํ์ผ์ ํ์ฑํํ๊ฑฐ๋, ํ
์คํธ์ฉ ์ค์ ํ์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- `@SpringBootTest(properties = "spring.config.name=test-application")`์ ๊ฐ์ด ์์ฑ์ ์ง์ ํ ์ ์์ต๋๋ค.
- **3. ์น ํ๊ฒฝ ์ค์ **
- `@SpringBootTest`๋ ๋ค์ํ ์น ํ๊ฒฝ ๋ชจ๋๋ฅผ ์ง์ํฉ๋๋ค.
- `WebEnviroment.MOCK` : ๊ธฐ๋ณธ๊ฐ์ผ๋ก, ์น ํ๊ฒฝ ์์ด `MockMvc`๋ฅผ ์ฌ์ฉํด ์๋ธ๋ฆฟ ํ๊ฒฝ์ ๋ชจํนํฉ๋๋ค.
- `WebEnviroment.RANDOM_PORT` : ํ
์คํธ์ ์์์ ํฌํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ด์ฅ ์๋ฒ๋ฅผ ์์ํฉ๋๋ค.
- `WebEnviroment.DEFINED_PORT` : ์ ํ๋ฆฌ์ผ์ด์
์ด ๊ตฌ์ฑ๋ ๊ธฐ๋ณธ ํฌํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- `WebEnviroment.NONE` : ์น ํ๊ฒฝ ์์ด ์ ํ๋ฆฌ์ผ์ด์
์ปจํ
์คํธ๋ง ๋ก๋ํฉ๋๋ค.
**์์**
```java
@SpringBootTest(webEnvironment = SpringBootTest.WebEnviroment.RANDOM_PORT)
```
- **4. ํตํฉ ํ
์คํธ**
- ์ด ์ ๋
ธํ
์ด์
์ ๋จ์ ํ
์คํธ์ ๋ฌ๋ฆฌ, ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ๋ฌ ๊ณ์ธต์ด ํตํฉ๋ ์ํ์์ ํ
์คํธ๋ฅผ ์ํํฉ๋๋ค.
- ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์น ์๋ฒ, ์๋น์ค ๋ ์ด์ด ๋ฑ์ด ์ค์ ๋ก ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง๋ฅผ ํ์ธํ ์ ์๊ฒ ํด์ค๋๋ค.
- **5. TestConfiguration ํด๋์ค ์ฌ์ฉ ๊ฐ๋ฅ**
- `@SpringBootTest` ์ ํจ๊ป `@TestConfiguration` ์ ์ฌ์ฉํ์ฌ ํ
์คํธ๋ฅผ ์ํด ํน๋ณํ ๊ตฌ์ฑ๋ ๋น(Bean)์ด๋ ์ค์ ์ ์ ์ํ ์ ์์ต๋๋ค.
## 2๏ธโฃ ์์ ์ฝ๋
```java
@SpringBootTest
public class MyServiceIntegrationTest {
@Autowired
private MyService myService;
@Test
public void testServiceMethod() {
// Given
// Setup initial conditions
// When
String result = myService.performAction();
// Then
assertEquals("ExpectedResult", result);
}
}
```
- ์์ ์์์์ `@SpringBootTest` ๋ `MyServiceIntegrationTest` ํด๋์ค๊ฐ Spring Application Context์์ ์คํ๋ ์ ์๋๋ก ํ๊ณ , `MyService` ๋น์ด ์ค์ ๋ก ์ฃผ์
๋์ด ํ
์คํธ๊ฐ ์คํ๋ฉ๋๋ค.
## 3๏ธโฃ ์์ฝ
- `@SpringBootTest`๋ Spring Boot ์ ํ๋ฆฌ์ผ์ด์
์์ ํตํฉ ํ
์คํธ๋ฅผ ์ฝ๊ฒ ์ํํ ์ ์๋๋ก ๋๋ ๊ฐ๋ ฅํ ์ ๋
ธํ
์ด์
์
๋๋ค.
- ์ด ์ ๋
ธํ
์ด์
์ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ฒด ์ปจํ
์คํธ๋ฅผ ๋ก๋ํ ์ํ์์ ํ
์คํธํ ์ ์์ผ๋ฉฐ, ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์
์๋๋ฆฌ์ค๋ฅผ ๊ฒ์ฆํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.