Mockito
Mockito๋?
์ฐ์ Mock์ด๋ผ๋ ๊ฐ๋ ์ ๋จผ์ ์๊ฐํด๋ณด์ -> Mock์ด๋ ๋๋ฆฌ๋ค, ์กฐ๋กฑํ๋ค๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง ์๋จ์ด์ด๋ค ํ์ง๋ง ํ ์คํธ์์๋ ์ด๋ป๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น? Mock ์ด๋ ์ง์ง ๊ฐ์ฒด์ฒ๋ผ ๋์ํ๊ฒ ๋ง๋ค์ด์ ํ ์คํธ์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค ์ด ๊ฐ์ฒด๋ ์ด๋ ๊ฒ ๋์ํ๊ฒ ํ ๊ฒ์ด๋ค ์ด๋ ๊ฒ ์ ์ธํ๋ ๊ฐ๋ ์ด๋ค
Mockito๋ ์์ Mock๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ์ ๊ณตํ๊ณ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ฃผ๋ Mock framework์ด๋ค
๊ทธ๋์ ์๋์ ์ฉ๋๋ ์ด๋์๋ค๊ฐ ์ฐ๋๊ฑฐ๋?
DB์์ ์ํ๋ ๊ฐ์ ๋ฃ์ด๋๊ณ ์ค์ ๊ฐ์ ธ์ค๋ฉด์ ํ ์คํ ๊ฐ๋ฅ
๋ด๋ถ์ API๊ฐ ์๋ ์ธ๋ถ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ mocking์ ํตํด์ ๊ฐ ๊ฐ๋ค์ ๋ํ ํ ์คํธ๋ฅผ ์งํํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค
repository๋ ๊ตณ์ด ๊ตฌํํ์ง ์๊ณ ๋ Mockito์ ํตํด์ ๋ง๋ค์ด๋๋ฉด ์ฝ๊ฒ ์ฌ์ฉ๊ฐ๋ฅ
๋จ์ ํ ์คํธ์ ๋ํ ๊ฐ๋ ์ด ์กฐ๊ธ์ ์ ๋งคํ๋ฐ ๋ญ ๋ฉ์๋๋ฅผ ๋จ์๋ผ๊ณ ์๊ฐํด์ ํด๋น ๋ฉ์๋์์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ์ธํ ๋ชจ๋ ๊ฒ์ Mockingํด์ผ ์ง์ง ๋จ์ ํ ์คํธ๋ผ๊ณ ์๊ฐํ ์ ๋ ์๊ณ , ๋จ์ํ๊ฒ ์ด๋ ํ ์๋๋ฆฌ์ค๋ฅผ ํ๋์ ๋จ์๋ผ๊ณ ์๊ฐํด์ ๊ทธ ์ธ์ ๊ฒ๋ค ์ Mockingํ ์๋ ์๋ค ์ด๋ฌํ ๊ฒ์ ์ง๋ ์ฌ๋ ๋ง์์ด๋ผ๊ณ ์๊ฐํ๊ธด ํ๋ค
์๋ ์๋ ๊ฑด @Mock์ ํตํด์ Mocking์ ์งํํ์๋ค ๊ทผ๋ฐ ๊ถ๊ธํ๊ฒ ์๊ฒผ๋ค -> ๋ง์ฝ A๋ผ๋ ํด๋์ค๋ฅผ mock์ ๋๋ ค๋๊ณ ๊ทธ ๋ด๋ถ์ ๋ฉ์๋ A_method๋ฅผ ๋ถ๋ฅด๋๋ฐ A_method๋ด๋ถ์์ B๋ผ๋ ํด๋์ค์ ๋ฉ์๋ B_Method์ ์ฌ์ฉํ๋ ๊ฒ์ ํ์ธํ๊ณ ์ถ์ ๋ ๊ทธ๋์ ์ฐพ๊ฒ ๋๊ฑด @InjectMock ์ด๋ผ ์ ๋ ธํ ์ด์ ์ด๋ค @Mock์ด ๋จ์ํ๊ฒ Mock ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ ๋ ธํ ์ด์ ์ด๋ผ๋ฉด @InjectMock์ ๋ฏธ๋ฆฌ ์์ฑ๋ Mock๊ฐ์ฒด๋ฅผ ์ด ์ ๋ ธํ ์ด์ ์ ์ ์ธํ ํด๋์ค ๋ด๋ถ์์ ๋ฏธ๋ฆฌ ์์ฑํ Mock๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ๊ณณ์๋ค๊ฐ ๋ฃ์ด์ฃผ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค
Stubbing ์ด๋?
์์์ Mock๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ์ํ๋ ๊ฐ์ ๋ฆฌํด ๋๋ ๊ฐ์ง๊ณ ๋๋ก ์ค์ ํด์ฃผ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋๋ฐ ํด๋น ํ๋ ์์ ์ Stubbing์ด๋ผ๊ณ ํด์ค๋ค
๊ธฐ๋ณธ์ ์ผ๋ก ์ฒ์ ๋ง๋ค์ด์ง๋ฉด DEFAULT ๊ฐ์ผ๋ก ์๋์ ๊ฐ๋ค
๋ฆฌํดํ๋ ํจ์๋ผ๋ฉด ๋ชจ๋ NULL์ ๋ฆฌํดํ๋ค
Primitive ํ์ ์ ๊ธฐ๋ณธ Primitive๊ฐ์ ๋ฆฌํด
์ฝ๋ ์ ํ์ ์ด๋ผ๋ฉด ๋น์ด์๋ ์ฝ๋ ์ ์ ๋ฆฌํด
void ํ์ ์ ์์ธ๋ฅผ ๋์ง์ง ์๊ณ ์๋ฌด๋ฐ ์ผ๋ ์ผ์ด๋์ง ์์
BDD
Behaviour-Driven Development ์ด๋ผ๋ ์๋ฏธ์ด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ ํ๋ํ๋์ง, ์ ํ๋ํ๋์ง ํ ์คํธํ๋ ํ๋์ ํ ์คํธ ๊ธฐ๋ฒ์ด๋ค given - when - then given์ ์ค์ ํ๋ ๋จ๊ณ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค -> stub, mock, ์ ์ธ๋ฑ์ ํด์ฃผ๊ณ when์ ํ ์คํธํด๋ณด๊ณ ์ถ์ ์ฝ๋๋ค์ ์์ฑํ๋ ๊ทธ๋ฌํ ๋จ๊ณ then์ ํ ์คํธํ ์ฝ๋๋ค์ด ๋์๊ฐ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ๊ณ ๊ฒฐ๊ณผ๊ฐ์ ํ์ธํ๋ ๋จ๊ณ์ด๋ค
Last updated
Was this helpful?