[Spring] TestCode, TDD, JUnit, assertJ
Test Code
์ ํ ๋๋ ์๋น์ค์ ํ์ง์ ํ์ธํ๊ณ ์ํํธ์จ์ด์ ๋ฒ๊ทธ๋ฅผ ์ฐพ์ต๋๋ค.
์ฆ, ํจ์, ํน์ ํ ๊ธฐ๋ฅ, UI, ์ฑ๋ฅ, API์คํ์ด ์์๋๋ก ๋์ํ๋์ง ํ์ธํ๋ ๊ฒ์
๋๋ค.
ํ ์คํธ ์ฝ๋์ ์ข ๋ฅ

- ํ ์คํธ ํผ๋ผ๋ฏธ๋๋ ๋์ ๋ฒ์๋ ์ฑ๊ฒฉ์ ๋ฐ๋ผ Unit test(๋จ์ ํ ์คํธ), Integration test(ํตํฉ ํ ์คํธ), UI ํ ์คํธ(E2E ํ ์คํธ) 3๊ฐ์ง์ ํ ์คํธ๋ก ๋๋์ด์ง๋๋ค.
- ๊ฐ๋ฐ์๋ถ๋ค์ด ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ๊ณตํต์ ์ผ๋ก ์์ฑํด์ผ ํ๋ ํ ์คํธ๋ค์ ๋ชจ์๋์ ๊ฒ์ด ํ ์คํธ ํผ๋ผ๋ฏธ๋์ ๋๋ค.
1. Unit Test
- ๋จ์ ํ ์คํธ
- ํจ์๋ ๋ชจ๋ ํด๋์ค์ ๊ฐ์ ๋จ์์ ๊ธฐ๋ฅ์ ๋ํ ์ ํจ์ฑ์ ๊ฒ์ฆํ๋ ํ ์คํธ์ ๋๋ค.
- ์๋ฅผ ๋ค์ด ์๋์ฐจ์ ํ์ด์ด๋ฅผ ํ๋ ํ ์คํธํ๋ ๊ฒ์ ๋จ์ ํ ์คํธ๋ผ ํฉ๋๋ค.
- ๋จ์ ํ ์คํธ๋ ๋งค์ฐ ๊ฐ๋จํ๊ณ ๋ช ํํ๋ฉฐ ๋น ๋ฅด๊ฒ ์คํ๋๋ค๋ ํน์ง์ด ์์ต๋๋ค.
- ๋ํ, ์๊ฒ ์ชผ๊ฐ์ง ๋จ์ ํ ์คํธ๋ ํด๋น ๋ก์ง์ด ์ด๋ค ์ญํ ์ ํ๋์ง ์ฝ๊ฒ ํ์ ํ ์ ์๋ค.
- ๋จ์ ํ ์คํธ๋ฅผ ์ฌ์ฉํ๋ฉด System.out์ผ๋ก ํ๋ ๋ฒ๊ฑฐ๋ก์ด ๋๋ฒ๊น ์ด ํ์ ์์ต๋๋ค.
2. Integration test
- ํตํฉ ํ ์คํธ
- ํ๋์ ๋จ์๊ฐ ์๋๋ผ ์ฌ๋ฌ ๊ฐ์ง์ ์๋ก ๋ค๋ฅธ ๋ชจ๋ ํน์ ํด๋์ค ๊ฐ ์ํธ์์ฉ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ํ ์คํธ์ด๋ค.
- ์ด๋ฌํ ํตํฉ ํ ์คํธ๊ฐ ํ์ํ ์ด์ ๋ ๊ฐ๊ฐ ๋จ์ ํ ์คํธ๊ฐ ๊ฒ์ฆ๋์๋ค ํ๋๋ผ๋, ๋ชจ๋ ๊ฐ ์ธํฐํ์ด์ค ๋ฐ ๋ฐ์ดํฐ ํ๋ฆ์ด ์๋ํ ๋๋ก ์๋ํ์ง ์๋ ๊ฒฝ์ฐ๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ์๋ฅผ ๋ค์ด, ํ์ด์ด์ ์์ง ๋ฑ ๋ถํ๋ค์ด ์๋ก ์ํธ์์ฉ์ ํ๋ฉด์ ์๋์ด ๊ฑธ๋ฆฌ๋์ง๋ฅผ ํ์ธํ๋ ํตํฉ ํ ์คํธ์ ๋๋ค.
3. User interface Test(E2E Test)
- End-to-End์ ์ค์๋ง๋ก ๋๊ณผ ๋์ ํ ์คํธ
- ์ค์ ์ฌ์ฉ์๋ค์ด ์ฌ์ฉํ๋ ํ๋ฉด์ ๋ํ ํ ์คํธ๋ฅผ ํ์ฌ ์๋น์ค์ ๊ธฐ๋ฅ์ด ์ ์์ ์ผ๋ก ์๋ํ๋์ง ๊ฒ์ฆํ๋ ํ ์คํธ์ ๋๋ค.
- ์๋ฅผ ๋ค์ด, ํ์ด์ด๋ ์์ง ๋ฑ ๋ถ๋ถ์ ์ธ ์ํธ์์ฉ์ด ์๋๋ผ ์์ ๊ณผ ๋ธ๋ ์ดํฌ, ์์ง ๋ฑ ์ฐจ๊ฐ ๋์๊ฐ๋์ง ์ ์ฒด์ ์ผ๋ก ํ ์คํธํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- UI ํ ์คํธ๋ ์ค์ ์ฑ์ ์ฌ์ฉํ๋ ์ฌ์ฉ์์ ํ๋ฆ์ ๋ํด ํ ์คํธ ํจ์ผ๋ก์จ UI ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ฌ์ ์ ์ฐจ๋จํจ์ผ๋ก์จ ์ ๋ขฐ์ฑ์ ๋์ ๋๋ค.
- ํ์ง๋ง ํ๋ฉด๊ณผ ์ง์ ์ ์ผ๋ก ์ฐ๊ด๋์ด์๋ ํ ์คํธ์ด๋ค๋ณด๋ ์คํ ์๊ฐ๋ ์ค๋ ๊ฑธ๋ฆฌ๊ณ ๋์์ธ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ํ ์คํธ ์ฝ๋์ ์์ ์ด ํ์ํฉ๋๋ค.
- ๊ทธ๋์ ์ ์ง๋ณด์ ๋น์ฉ๋ ํฝ๋๋ค.
ํ ์คํธ ์ฝ๋ ์์ฑ์ ์ฅ์
- ๊ฐ๋ฐ ๊ณผ์ ์ค ์์์น ๋ชปํ ๋ฌธ์ ๋ฅผ ๋ฏธ๋ฆฌ ๋ฐ๊ฒฌํ ์ ์๋ค. (์๋ฌ๋ฅผ ํด๋ผ์ด์ธํธ๋ณด๋ค ๋นจ๋ฆฌ ๋ฐ๊ฒฌํ ์ ์๋ค.)
- ์์ฑํ ์ฝ๋๊ฐ ์๋ํ ๋๋ก ์๋ํ๋์ง ๊ฒ์ฆํ ์ ์๋ค.
- ์ฝ๋ ๋ฆฌํํ ๋ง์ ์ ์ฐํ๊ณ ์์ ์ ์ธ ๋์์ ํ ์ ์๊ฒ ํด ์ค๋ค.
- ์ฝ๋์ ๋ชจ๋ํ๋ฅผ ํ ๋ฒ ๋ ๊ณ ๋ฏผํ๊ฒ ํด ์ค๋ค.
- ์ฝ๋ ๋ณ๊ฒฝ ์, ๋ณ๊ฒฝ ๋ถ๋ถ์ผ๋ก ์ธํ ์ํฅ๋๋ฅผ ์ฝ๊ฒ ํ์ ํ ์ ์๋ค.
- ํ ์คํธ ์ฝ๋๋ฅผ ํตํด ๋์ํ๋ ๋ฐฉ์ ๋ฐ ๊ฒฐ๊ณผ ํ์ธ์ด ๊ฐ๋ฅํ๋ค.
TDD (Test Driven Development)
- ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ
- ํ ์คํธ๋ฅผ ๋จผ์ ์ง๊ณ ํ ์คํธ๋ฅผ ํต๊ณผํ ๋งํผ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ์ฌ ๊ตฌํํ๋ค.
- ์คํจํ๋ ํ ์คํธ๋ฅผ ๋จผ์ ์์ฑํ๊ณ ๊ทธ์ ํด๋นํ๋ ๊ธฐ๋ฅ์ ๋ง๋ค์ด๋๊ฐ๋ ๋ฐฉ์์ด๋ค.
- ์ดํ์ ๋ฆฌํฉํฐ๋ง์ผ๋ก ํจ์จ์ฑ ํฅ์ํ๋ค.
TDD ๊ฐ๋ฐ ํ๋ก์ธ์ค

- { Red } ๋จ๊ณ์์๋ ์คํจํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์์ฑํฉ๋๋ค.
- { Green } ๋จ๊ณ์์๋ ํ ์คํธ ์ฝ๋๋ฅผ ์ฑ๊ณต์ํค๊ธฐ ์ํ ์ค์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
- { Yellow } ๋จ๊ณ์์๋ ์ค๋ณต ์ฝ๋ ์ ๊ฑฐ, ์ผ๋ฐํ ๋ฑ์ ๋ฆฌํฉํฐ๋ง์ ์ํํฉ๋๋ค.
์ด๋ ๊ฒ ์คํจํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์์ฑํ๊ณ ๊ทธ์ ํด๋นํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ์์ด TDD์ด๋ค. ์ค์ํ ๊ฒ์ ์คํจํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋๊น์ง ์ค์ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๋ ๊ฒ๊ณผ, ์คํจํ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ๋์ ์ต์ ์ค์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ ๊ฒ์ ๋๋ค.
TDD์ ์ฅ์
- ๋ชจ๋ ์๊ตฌ์ฌํญ, ๋ชฉํ์ ๋ํด์ ์ ๊ฒํ ์ ์๊ณ , ์ฌ์ฉ์ ์
์ฅ์์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
(์์คํ ์ ๋ฐ์ ์ธ ์ค๊ณ ํฅ์) - ๊ตฌํ๋ณด๋ค๋ ์ธํฐํ์ด์ค์ ์ง์คํด์ ์ฝ๋๋ฅผ ๊ตฌํํจ์ผ๋ก์จ ์ฝ๋์ ํ๋ฆฌํฐ๋ ํฅ์๋๊ณ ์์คํ ์ ๋ฐ์ ์ธ ์ค๊ณ๋ฅผ ํฅ์ํ๋ค.
- ์์ฐ์ค๋ฝ๊ฒ ํ ์คํธ ํต๊ณผ์จ์ด ๋์์ง๋ค.
- ์ค๋ฒ ์์ง๋์ด๋ง ๋ฐฉ์ง
- ์ค๊ณ์ ๋ํ ํผ๋๋ฐฑ์ ๋น ๋ฅด๋ค.
์ผ๋ฐ ๊ฐ๋ฐ ๋ฐฉ์๊ณผ TDD ๊ฐ๋ฐ ๋ฐฉ์์ ์ฐจ์ด์
์ผ๋ฐ ๊ฐ๋ฐ ๋ฐฉ์
๋ณดํต ๊ฐ๋ฐ ๋ฐฉ์์ โ์๊ตฌ์ฌํญ ๋ถ์ โ ์ค๊ณ โ ๊ฐ๋ฐ โ ํ ์คํธ โ ๋ฐฐํฌโ์ ํํ์ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ต๋๋ค.

์ผ๋ฐ ๊ฐ๋ฐ ๋ฐฉ์์ ๋ฌธ์ ์
- ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋๋ฆฌ๊ฒ ํ๋ ์ ์ฌ์ ์ํ์ด ์กด์ฌํ๋ค.
- ์๋น์์ ์๊ตฌ์ฌํญ์ด ์ฒ์๋ถํฐ ๋ช ํํ์ง ์์ ์ ์๋ค.
- ๋ฐ๋ผ์ ์ฒ์๋ถํฐ ์๋ฒฝํ ์ค๊ณ๋ ์ด๋ ต๋ค.
- ์์ฒด ๋ฒ๊ทธ ๊ฒ์ถ ๋ฅ๋ ฅ ์ ํ ๋๋ ์์ค์ฝ๋์ ํ์ง์ด ์ ํ๋ ์ ์๋ค.
- ์์ฒด ํ ์คํธ ๋น์ฉ์ด ์ฆ๊ฐํ ์ ์๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ์ด ๋ฐ์๋๋ ์ด์ ๋ ์ด๋ ํ๋ก์ ํธ๋ ์ด๊ธฐ ์ค๊ณ๊ฐ ์๋ฒฝํ์ง ์์ ์ฌ์ค๊ณ๋ก ์ธํด ๊ฐ๋ฐ์๋ ์ฝ๋๋ฅผ ์ฝ์ , ์์ , ์ญ์ ํ๋ ๊ณผ์ ์์ ๋ถํ์ํ ์ฝ๋๊ฐ ๋จ๊ฑฐ๋ ์ค๋ณต๋ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
๊ทธ๋์ ์ผ๋ฐ ๊ฐ๋ฐ ๋ฐฉ์์ ๊ณ ๊ฐ์ ์๊ตฌ์ฌํญ ๋๋ ๋์์ธ์ ์ค๋ฅ ๋ฑ ๋ง์ ์ธ๋ถ ๋๋ ๋ด๋ถ ์กฐ๊ฑด์ ์ํด ์ฌ์ค๊ณํ์ฌ ์ ์ง์ ์ผ๋ก ์๋ฒฝํ ์ค๊ณ๋ก ๋์๊ฐ๋๋ฐ, ๊ฒฐ๋ก ์ ์ผ๋ก ์ด๋ฌํ ์ฝ๋๋ค์ ์ฌ์ฌ์ฉ์ด ์ด๋ ต๊ณ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ ์ ์ง๋ณด์๋ฅผ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค.
์์ ๋ถ๋ถ์ ๊ธฐ๋ฅ ์์ ์๋ ๋ชจ๋ ๋ถ๋ถ์ ํ ์คํธํด์ผ ํ๋ฏ๋ก ์ ์ฒด์ ์ธ ๋ฒ๊ทธ๋ฅผ ๊ฒ์ถํ๊ธฐ ์ด๋ ค์์ ธ ์์ฒด ๋ฒ๊ทธ ๊ฒ์ถ ๋ฅ๋ ฅ์ด ์ ํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์์ ์์ ์๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ค์ ํ ์คํธํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์์ฒด ํ ์คํธ ๋น์ฉ์ด ์ฆ๊ฐ๋ฉ๋๋ค.
TDD ๊ฐ๋ฐ ๋ฐฉ์
TDD์ ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ ๋ฐฉ์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋ค์ ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ ๊ฒ์ ๋๋ค.
๋์์ธ(์ค๊ณ) ๋จ๊ณ์์ ํ๋ก๊ทธ๋๋ฐ ๋ชฉ์ ์ ๋ฐ๋์ ๋ฏธ๋ฆฌ ์ ์ํด์ผ๋ง ํ๊ณ ๋ ๋ฌด์์ ํ ์คํธํด์ผ ํ ์ง ๋ฏธ๋ฆฌ ์ ์(ํ ์คํธ ์ผ์ด์ค ์์ฑ) ํด์ผ ํฉ๋๋ค. ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋์ค ๋ฐ์ํ๋ ์์ธ ์ฌํญ(๋ฒ๊ทธ ๋ฐ ์์ ์ฌํญ)์ ํ ์คํธ ์ผ์ด์ค์ ์ถ๊ฐํ๊ณ ์ค๊ณ๋ฅผ ๊ฐ์ ํฉ๋๋ค. ์ดํ ํ ์คํธ๊ฐ ํต๊ณผ๋ ์ฝ๋๋ง์ ์ฝ๋ ๊ฐ๋ฐ ๋จ๊ณ์์ ์ค์ ์ฝ๋๋ก ์์ฑํฉ๋๋ค.

์ด๋ฌํ ๋ฐ๋ณต์ ์ธ ๋จ๊ณ๊ฐ ์งํ๋๋ฉด์ ์์ฐ์ค๋ฝ๊ฒ ์ฝ๋์ ๋ฒ๊ทธ๊ฐ ์ค์ด๋ค๊ณ ์์ค์ฝ๋๋ ๊ฐ๊ฒฐํด์ง๋๋ค. ๋ํ ํ ์คํธ ์ผ์ด์ค ์์ฑ์ผ๋ก ์ธํด ์์ฐ์ค๋ฝ๊ฒ ์ค๊ณ๊ฐ ๊ฐ์ ๋จ์ผ๋ก ์ฌ์ค๊ณ ์๊ฐ์ด ์ ๊ฐ๋ฉ๋๋ค.
TDD ๊ฐ๋ฐ ๋ฐฉ์์ ๋ฌธ์ ์
- ์์ฐ์ฑ ์ ํ
์ฒ์๋ถํฐ 2๊ฐ์ ์ฝ๋๋ฅผ ์ง์ผํ๊ณ ์ค๊ฐ์ค๊ฐ ํ ์คํธ๋ฅผ ํ๋ฉด์ ๊ณ ์ณ๋๊ฐ์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ์๋๊ฐ ๋๋ ค์ง๋ค๊ณ ์๊ฐํ๋ ์ฌ๋์ด ๋ง์ต๋๋ค. TDD ๋ฐฉ์์ ๊ฐ๋ฐ ์๊ฐ์ ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ ๋ฐฉ์์ ๋นํด ๋๋ต 10~30% ์ ๋๋ก ๋์ด๋ฉ๋๋ค.
๋ฐ๋ผ์ SI ํ๋ก์ ํธ์์๋ ์ํํธ์จ์ด์ ํ์ง๋ณด๋ค๋ ๋ฉ๊ธฐ์ผ ์ค์๊ฐ ํจ์ฌ ์ค์ํ๊ธฐ ๋๋ฌธ์ TDD ๋ฐฉ์์ ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
ํ ์คํธ ๋๊ตฌ (JUnit & assertJ)
JUnit
- ์๋ฐ์ฉ ๋จ์ํ ์คํธ(Unit Test) ๋๊ตฌ
JUnit ํน์ง
- @Test ๋ฉ์๋๊ฐ ํธ์ถํ ๋ ๋ง๋ค ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ๋ ๋ฆฝ์ ์ธ ํ ์คํธ๊ฐ ์ด๋ฃจ์ด์ง๊ฒ ํฉ๋๋ค.
- ๋จ์ (assert) ๋ฉ์๋๋ก ํ ์คํธ ์ผ์ด์ค์ ์ํ ๊ฒฐ๊ณผ๋ฅผ ํ๋ณํ ์ ์์ต๋ค. (๋จ์ ๋ฉ์๋๋ ์๋์ ์ ๋ฆฌ)
- jUnit4๋ถํฐ๋ ์ด๋ ธํ ์ด์ ์ผ๋ก ๊ฐ๊ฒฐํ๊ฒ ํ ์คํธ๋ฅผ ์ง์ํฉ๋๋ค.(@Test @Before @After)
- ๊ฒฐ๊ณผ๋ ์ฑ๊ณต(๋ น์), ์คํจ(๋ถ์์) ์ค ํ๋๋ก ํ์๋ฉ๋๋ค.
- ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ ๊ฒ ์ด์ธ ์ต์ ํ๋ ์ฝ๋๋ฅผ ์ ์ถํด๋ด๋ ๊ธฐ๋ฅ๋ ์ ๊ณตํฉ๋๋ค.
assert๋ฉ์๋ ์ ๋ฆฌ
- assertArrayEquals(a, b) : ๋ฐฐ์ด A์ B๊ฐ ์ผ์นํจ์ ํ์ธํ๋ค.
- assertEquals(a, b) : ๊ฐ์ฒด A์ B๊ฐ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋์ง ํ์ธํ๋ค.
- assertEquals(a, b, c) : ๊ฐ์ฒด A์ B๊ฐ ๊ฐ์ด ์ผ์นํจ์ ํ์ธํ๋ค.( a: ์์๊ฐ, b:๊ฒฐ๊ณผ๊ฐ, c: ์ค์ฐจ๋ฒ์)
- assertSame(a, b) : ๊ฐ์ฒด A์ B๊ฐ ๊ฐ์ ๊ฐ์ฒด์์ ํ์ธํ๋ค.
- assertTrue(a): ์กฐ๊ฑด A๊ฐ ์ฐธ์ธ์ง ํ์ธํ๋ค.
- assertNotNull(a) : ๊ฐ์ฑ A๊ฐ null์ด ์๋์ ํ์ธํ๋ค.
org.junit.Assert.assertThat
org.junit.Assert.assertThat์ ๊ธฐ๋ณธ ํํ๋ ์๋์ ๊ฐ์ต๋๋ค.
public static <T> void assertThat(T actual, Matcher<? super T> matcher)
actual ์ธ์์ ๊ฒ์ฆ๋์(์คํ ๋จ๊ณ์ ๊ฒฐ๊ณผ)์ ๋ฃ๊ณ , ์ด์ ๋น๊ตํ๋ ๋ก์ง(matcher)์ ์ฃผ์ ๋ฐ์ ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
๊ฐ๋ฐ์๊ฐ matcher๋ฅผ ์ง์ ๊ตฌํํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๊ณ , ๊ตฌํํ matcher์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์๋ ์์ต๋๋ค.
matcher์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํ ์คํธ๊ฐ ์คํจํ๋๋ฐ, ์ธ๋ถ ์์ธ์ ์ํฅ์ ๋ฐ๋ ๊ฒ์ ์ข์ ํ ์คํธ๋ผ๊ณ ํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ์ด์ ๋๋ฌธ์ธ์ง, JUnit์ assertThat์ hamcrest์ ๊ตฌํ๋ matcher๋ฅผ ์ฌ์ฉํ๋๋ก ๊ฐ์ ํ๊ณ ์์ต๋๋ค.
AssertJ
- Java ํ ์คํธ์์ ์ ์ฐฝํ๊ณ ํ๋ถํ assertions๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์คํ ์์ค ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ํ ์คํธ ์ฝ๋ ์์ฑ ์ ๊ฐ๋ ์ฑ์ด ๋ฐ์ด๋๊ณ ์์ธํ ์๋ฌ ๋ฉ์์ง๋ฅผ ์ ๊ณตํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
org.assertj.core.api.Assertions.assertThat
public static AbstractAssert<SELF, T> assertThat(T actual)
assertj์ assertThat์ ์ธ์๋ก actual(๊ฒ์ฆ๋์)๋ง ๋ฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ actual์ ํ์ ์ ๋ฐ๋ผ AbstractAssert๋ผ๋ ์ถ์ ํด๋์ค๋ฅผ ์์ํ Assert ํด๋์ค๋ฅผ ๋ฐํํฉ๋๋ค.
๊ฒฐ๋ก
AssertJ์ Junit Assertions ์ค ์ด๋ค ๊ฑธ ์จ์ผ ํ๋
Assertions๋ Junit์ด ๊ตฌํํ ํด๋์ค๋ ์๊ณ , AssertJ์ Assertions๊ฐ ์์ต๋๋ค. ์ฃผ๋ก AssertJ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ ์ด์ ๋ JUnit5.Assertions๋ IDE๊ฐ ์๋ ์์ฑ๋ ์ง์ํ์ง ์์ผ๋ฉฐ ๋ฉ์๋๋ฅผ ์ธ์์ผ ํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
๋ฐ๋ฉด assertJ๋ junit์ด ์ ๊ณตํ๋ assert ๋ณด๋ค ์ฌ์ฉํ๊ธฐ ํธํ ๋ฌธ๋ฒ์ ์ ๊ณตํ๋ฉฐ, ํจ์๋ช ์ด ์ง๊ด์ ์ด์ด์ ๊ฐ๋ ์ฑ๋ ์ข์ต๋๋ค.
AssertJ๊ณต์๋ฌธ์๋ฅผ ๋ณด๋ฉด ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ์ด ๋์จ ์์์์ AssertJ๊ฐ ๋ ๋ช ํํฉ๋๋ค.
// Junit
assertEquals(expected, actual);
// to : AssertJ
assertThat(actual).isEqualTo(expected);
[์ฐธ์กฐ]
1. https://hanamon.kr/tdd%EB%9E%80-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C/