๐๋ค๋ก๊ฐ๊ธฐ
Spring Framework๋ ๋ค์ํ ํ
์คํธ ๋๊ตฌ๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๋ค์ด TDD(Test-Driven Development) ๋๋ ๋จ์ ํ
์คํธ, ํตํฉ ํ
์คํธ ๋ฑ์ ์ํํ ์ ์๋๋ก ์ง์ํ๋ค.
Spring framework์ ํ
์คํธ ๋๊ตฌ
-
JUnit
- JUnit์ Java ์ธ์ด์ฉ ๋จ์ ํ
์คํธ ํ๋ ์์ํฌ๋ก, Spring Framework์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์๋๋ ํ
์คํธ ๋๊ตฌ์ด๋ค.
- JUnit์ ์ฌ์ฉํ์ฌ ๋จ์ ํ
์คํธ๋ฅผ ์์ฑํ๊ณ ์คํํ ์ ์์ผ๋ฉฐ, ํ
์คํธ ์ผ์ด์ค์ ๊ธฐ๋ฅ๋ณ๋ก ๊ทธ๋ฃนํํ์ฌ ํ
์คํธ ์ค์ํธ(Test Suite)๋ฅผ ์์ฑํ ์ ์๋ค.
-
Spring TestContext Framework
- Spring TestContext Framework๋ Spring Framework์ ํตํฉํ์ฌ ํ
์คํธ ์์ Spring ApplicationContext๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ์ด๋ฅผ ํตํด ํ
์คํธ์์ Spring์ ๋ค์ํ ๊ธฐ๋ฅ(์์กด์ฑ ์ฃผ์
, ํ๋กํ์ผ๋ง ๋ฑ)์ ํ์ฉํ ์ ์๋ค.
@RunWith(SpringJUnit4ClassRunner.class) ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ฌ Spring๊ณผ JUnit์ ํตํฉํ์ฌ ํ
์คํธํ ์ ์๋ค.
-
Mockito
- Mockito๋ Java์ฉ Mock ํ๋ ์์ํฌ๋ก, Spring Framework์์ Mock ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธ๋ฅผ ์ข ๋ ํธ๋ฆฌํ๊ฒ ์งํํ ์ ์๋๋ก ๋์์ค๋ค.
- Mockito๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ถ ์์กด์ฑ์ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ๊ฐ์ง(Mock) ๊ฐ์ฒด๋ก ๋์ฒดํ์ฌ ํ
์คํธ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์๋ค.
-
MockMvc
- MockMvc๋ Spring MVC ํ
์คํธ์ฉ ํ๋ ์์ํฌ๋ก, ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ปจํธ๋กค๋ฌ๋ฅผ ํ
์คํธํ๋ ๋ฐ ๋์์ ์ค๋ค.
- MockMvc๋ฅผ ์ฌ์ฉํ๋ฉด ์ปจํธ๋กค๋ฌ์ ๋์์ ์๋ฎฌ๋ ์ด์
ํ๊ณ HTTP ์์ฒญ์ ์ ์กํ์ฌ ํ
์คํธํ ์ ์๋ค.
-
TestEntityManager
- Spring Data JPA๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, TestEntityManager๋ ํ
์คํธ์ฉ EntityManager๋ฅผ ์ ๊ณตํ์ฌ JPA ์ํฐํฐ๋ฅผ ์ฝ๊ฒ ํ
์คํธํ ์ ์๋๋ก ๋์์ค๋ค.
-
TestRestTemplate
- TestRestTemplate์ ์น ์๋น์ค๋ฅผ ํ
์คํธํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํด๋์ค๋ก, RESTful API๋ฅผ ํธ์ถํ์ฌ ํ
์คํธํ ์ ์๋ค.
- Spring Boot์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ํ
์คํธํ๋ ๋ฐ ์ ์ฉํ๋ค.
-
Embedded MongoDB
- Embedded MongoDB๋ ์ค์ MongoDB ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฉ๋ชจ๋ฆฌ ๋ด์์ ๋์ํ๋ ์๋ฒ ๋๋(embedded) MongoDB ์๋ฒ๋ฅผ ์คํํ์ฌ ํ
์คํธํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ด๋ค.
- Embedded MongoDB๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ๋ถ MongoDB ์๋ฒ์ ๋ํ ์์กด์ฑ ์์ด ํ
์คํธ๋ฅผ ์คํํ ์ ์์ผ๋ฉฐ, ํ
์คํธ ๊ฐ์ ๋ฐ์ดํฐ ๊ฐ์ญ์ ๋ฐฉ์งํ ์ ์๋ค.
// ์ธ๋ฉ๋ชจ๋ฆฌ ๋ชฝ๊ณ DB ํ
์คํธ์ฉ ์์กด
testImplementation 'de.flapdoodle.embed:de.flapdoodle.embed.mongo'
- ์ด ๊ฒฝ์ฐ ํ
์คํธ ํด๋์ค์์
@DataMongoTest ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ฌ Embedded MongoDB๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํ๋ค. ์ด ์ด๋
ธํ
์ด์
์ MongoDB ๊ด๋ จ ์ปดํฌ๋ํธ๋ค๋ง ๋ก๋ํ์ฌ ํ
์คํธ๋ฅผ ์คํํ๊ฒ ํด์ค๋ค.