์ค๋์ ํ ํ๋ก์ ํธ์์ ์ฌ์ฉํ Maria DB (๋ง๋ฆฌ์ DB)๋ฅผ ๋ก์ปฌ์ด ์๋ ๋์ปค ์ปจํ
์ด๋๋ก ์คํ ํ์๊ณ , ์งํํ๋ฉฐ ๋ฐฐ์ด ์ด๋
ธํ
์ด์
๋ฑ์ ๋ํด ์ ๋ฆฌ ํ๊ฒ ์ต๋๋ค.
๊ธฐ์ด์ ์ธ ๋์ปค ๋ฐ์คํฌํ ์ค์น์ ๋์ปค ๋ช
๋ น์ด๋ ์๋ตํ๊ฒ ์ต๋๋ค.
OS๋ ์๋์ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑํ๊ฒ ์ต๋๋ค.
๋์ปค ๋ฐ์คํฌํ์ ์คํํฉ๋๋ค.
์๋์ฐ์ ํ์์์ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํํฉ๋๋ค.
โก docker pull mariadb ๋ช
๋ น์ด๋ฅผ ํตํด ๋ง๋ฆฌ์ DB ์ต์ ๋ฒ์ ์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด ๋ฐ์ต๋๋ค.
โก ๋ค์ด์ด ์ ๋์๋์ง docker images ๋ฅผ ํตํด ํ์ธํฉ๋๋ค.
โก mariadb๋ฅผ ์ค์นํ ์ปจํ
์ด๋๋ฅผ ์คํ ํฉ๋๋ค
docker run --name ${์ปจํ
์ด๋ ์ด๋ฆ} -d -e MYSQL_ROOT_PASSWORD=${๋น๋ฐ๋ฒํธ} -p 3306:3306 mariadb
โก mariadb ์ปจํ
์ด๋์ ์ ์ ํฉ๋๋ค.
docker exec -it ${์ปจํ
์ด๋ ์ด๋ฆ} /bin/bash
โก ๋ฃจํธ ๊ณ์ ์ผ๋ก ์ ์ ํฉ๋๋ค.
mysql -u root -p ์ ์ํ ๋น๋ฐ๋ฒํธ ์
๋ ฅ์ ์๊ตฌํ๋๋ฐ ์ค์นํ ๋ ์
๋ ฅํ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๋ฉด mariadb์ ์ํํ๊ฒ ์ ์์ด ๋ฉ๋๋ค.
Spring Data Jpa๋ฅผ ์ฌ์ฉํ๊ณ ์์์ผ๋ฉฐ, ์ํ์ ๋ฑ๋ก (Save) ๊ธฐ๋ฅ์ ํ
์คํธ ํ๊ธฐ ์ํด ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์์๋ค.โก ํ
์คํธ ์ฝ๋์์๋ H2 ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค๊ณ ํ๋ค ์ด์ ๋ ๋ญ๊น ?
@DataJpaTest๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์ฐธ์กฐํ DB์ default (๊ธฐ๋ณธ)๊ฐ H2 ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ผ๊ณ ํ๋ค.
โก Mock ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด H2 DB๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค๊ณ ํ๋ค.
์ํฉ์ ๋ฐ๋ผ ์ฌ์ฉํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
@Transactional์ด๋ ธํ ์ด์ ๋ ์ค์ํ๋ฐ, ์ด ๋ถ๋ถ์ ๋ํด์๋ ์ถํ ๋ค๋ฃฐ ์์ ์ด๋ค.
์ด๋ฒ ๋ธ๋ก๊ทธ์์ ์ฃผ๋ชฉํ ๋ถ๋ถ์@TestPropertySource(๊ฒฝ๋ก)๋ผ๋ ์ด๋ ธํ ์ด์ ์ด๋ค.
(์ฐ์ ์์ ๊ฐ๋ ์ด ๋ฑ์ฅํ์ง๋ง, ์กฐ๊ธ deepํ ๊ฐ๋ ์ด๋ผ ์ค๋ ฅ์ด ์ด๋์ ๋ ์ถฉ์กฑ๋ ๋ ํ์ธํด์ผ ๋ ๊ฒ ๊ฐ๋ค.)
- ๋๋ถ๋ถ
application.yml์ด๋ผ๋ ์ค์ ํ์ผ์ default๋ก ์ฌ์ฉํ ๊ฒ ์ด๋ค.
@TestPropertySource(๊ฒฝ๋ก)๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ฒฝ๋ก์ ์์นํ
์๋ก ๋ง๋application-test.yml์ ์ค์ ์ ์ฌ์ฉํ๊ฒ๋๋ค. (DB ์ค์ ๋ฑ๋ฑ)
์ฅ์ ์ผ๋ก๋ yml์ ๋ฐ๋ก ๊ด๋ฆฌํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ ๊ฒ ๊ฐ๋ค.
์ค๋ ์ํ ๋ฑ๋ก ๊ธฐ๋ฅ์ ๋ํด PR๊ณผ ์ฝ๋ ๋ฆฌ๋ทฐํ develop ๋ธ๋์น๋ก ๋จธ์ง๋ฅผ ์์ ํ์๋ค.
์ ์ ๊ณ ๋ํ ํด ๋๊ฐ์ผ ๋ ๊ฒ ๊ฐ๋ค.
(@RestControllerAdvice ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํด ์์ธ ์ปค์คํ
, ์์ธ ๋ฉ์์ง ์ปค์คํ
, ํ
์คํธ ์ฝ๋ ์์ฑ ๋ฑ๋ฑ๋ฑ๋ฑ ํ ๊ฒ ์ข ๋ง๋ค)
https://dongjuppp.tistory.com/92
(@DataJpaTest ์์ H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋์ด์ )