test strategy - lets-go-trip/treaXure-backend GitHub Wiki
ํ ์คํธ ์ข ๋ฅ | ๋ชฉ์ | ๋ํ ๊ธฐ์ | ์ฅ์ | ๋จ์ |
---|---|---|---|---|
๋จ์ ํ ์คํธ | ์๋น์ค ๋ก์ง ๊ฒ์ฆ |
@Mock , @InjectMocks
|
๋น ๋ฅด๊ณ ๋ ๋ฆฝ์ | DB ํ ์คํธ ๋ถ๊ฐ |
์ฌ๋ผ์ด์ค ํ ์คํธ | JPA Repository ๊ฒ์ฆ | @DataJpaTest |
๋น ๋ฆ, JPA ํ ์คํธ ํนํ | ์๋น์ค/์ปจํธ๋กค๋ฌ ์ ์ธ |
Testcontainers ํตํฉ ํ ์คํธ | ์ค์ DB ํ๊ฒฝ ๊ฒ์ฆ |
@DataJpaTest or @SpringBootTest + Testcontainers |
์ค์ ํ๊ฒฝ ์ ์ฌ | ๋๋ฆผ, Docker ํ์ |
์ ์ฒด ํตํฉ ํ ์คํธ | ๊ณ์ธต ๊ฐ ์ฐ๋ ํ์ธ | @SpringBootTest |
์ค์ ํ๋ฆ ๊ฒ์ฆ | ๋๋ฆผ, ๋๋ฒ๊น ์ด๋ ค์ |
WebMvcTest | ์ปจํธ๋กค๋ฌ ๋จ๋ ํ ์คํธ |
@WebMvcTest + @MockBean
|
๋น ๋ฆ, ์น ๊ณ์ธต๋ง ๊ฒ์ฆ | ์ค์ ์๋น์ค ๋์ ์๋ |
BDD ํ ์คํธ | ๊ฐ๋ ์ฑ ๋์ ํ ์คํธ | given-when-then (Mockito) | ๋ช ํํ ์๋ ํํ | ์์ฑ ๋ณต์ก ๊ฐ๋ฅ |
REST API ํ ์คํธ | HTTP API ๋์ ํ์ธ | RestAssured, MockMvc | ์๋ต ๊ฒ์ฆ ์ ํ | ๋๋ฆผ, ์ค์ ๋ณต์ก |
- "๋จ์(Unit)" โ "ํ๋์ ๋ฉ์๋๋ ํด๋์ค ๋จ๋ "
- "์ฌ๋ผ์ด์ค(Slice)" โ "๊ณ์ธต ์ค ์ผ๋ถ๋ง ์๋ผ ํ ์คํธ"
- "ํตํฉ(Integration)" โ "์ฌ๋ฌ ๊ณ์ธต์ด ํจ๊ป ๋์ํ๋์ง ํ์ธ"
- "์ ์ฒด ํตํฉ(Full Integration)" โ "์คํ๋ง ๋ถํธ ์ ์ฒด ์ฑ์ ์ค์ ์ฒ๋ผ ํ ์คํธ"
๋ชฉ์ | ์ถ์ฒ ๋ฐฉ๋ฒ |
---|---|
์๋น์ค ๋ก์ง๋ง ๋น ๋ฅด๊ฒ ๊ฒ์ฆํ๊ณ ์ถ๋ค | โ Mockito ๋จ์ ํ ์คํธ |
Repository ์ฟผ๋ฆฌ๊ฐ ์ ํํ์ง ํ ์คํธํ๊ณ ์ถ๋ค | โ
@DataJpaTest or Testcontainers |
์ค์ DB์์ ์ด์ ํ๊ฒฝ๊ณผ ์ ์ฌํ๊ฒ ํ ์คํธํ๊ณ ์ถ๋ค | โ Testcontainers ํตํฉ ํ ์คํธ |
์ ์ฒด ๊ธฐ๋ฅ ํ๋ฆ(Controller โ DB) ํ ์คํธ ํ์ | โ
@SpringBootTest
|
Controller ์ ๋ ฅ/์๋ต๋ง ๊ฒ์ฆํ๊ณ ์ถ๋ค | โ
@WebMvcTest
|