๐ Chapter 7: ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ๋ฌ์ฑ
๐ ํ ์คํธ๋ฅผ ๋จผ์ ์์ฑํ๋ ๊ฒ์ด ์ค๊ณ์ ์ด๋ป๊ฒ ๋์์ด ๋๋๊ฐโ
- ๊ฐ์ฒด๊ฐ ํด๋น ๊ฐ์ฒด๋ฅผ ๋๋ฌ์ผ ๋ ํฐ ํ๊ฒฝ๊ณผ ์กฐํ๋๋ ์์ง๋ ฅ ์๋ ๋จ์๋ฅผ ๋ํ๋ด๊ธฐ๋ฅผ ๋ฐ๋๋ค. ๊ทธ๋ฌํ ์ปดํฌ๋ํธ๋ก ๋ง๋ค์ด์ง ์์คํ ์ ์๊ตฌ ์ฌํญ์ด ๋ณ๊ฒฝ๋ ๋ ์ฌ๊ตฌ์ฑ๊ณผ ์ ์์ ํ์ํ ์ ์ฐํจ์ ๊ฐ์ถ ๊ฒ์ด๋ค.
- ์ด ๊ฐ์ ๊ด์ฐฐ์ ๋์์ด ๋๋ TDD์ ์ธ ๊ฐ์ง ์ธก๋ฉด์ด ์๋ค.
- ํ ์คํธ๋ก ์์ํ๋ค๋ ๊ฒ์ ์ด๋ป๊ฒ๋ฅผ ๊ณ ๋ คํ๊ธฐ ์ ์ ๋ฌ์ฑํ๊ณ ์ ํ๋ ๋ฐ๊ฐ ๋ฌด์์ธ์ง๋ฅผ ๊ธฐ์ ํด์ผ ํจ์ ์๋ฏธํ๋ค. ์ด๋ ๋์ ๊ฐ์ฒด์ ๋ํด ์ถ์ํ๋ฅผ ์ฌ๋ฐ๋ฅธ ์์ค์ผ๋ก ์ ์งํ๋ ๋ฐ ๊ธฐ์ฌํ๋ค.
- ๋จ์ ํ ์คํธ๋ฅผ ์ดํด ๊ฐ๋ฅํ ์ํ๋ก ์ ์งํ๋ ค๋ฉด ๋จ์ ํ ์คํธ์ ๋ฒ์๋ฅผ ์ ํํด์ผ ํ๋ค.
- ๋จ์ ํ ์คํธ๋ฅผ ์ํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ ค๋ฉด ํด๋น ๊ฐ์ฒด์ ์์กด์ฑ์ ์ ๋ฌํด์ผ ํ๋๋ฐ, ์ด๋ ๊ทธ๋ฌํ ์์กด์ฑ์ด ์ด๋์ ์๋์ง ์์์ผ ํ๋ค๋ ์๋ฏธ๋ค. ๊ทธ๋ฌ๋ฉด ์ฝํ ์คํธ ๋ ๋ฆฝ์ฑ์ด ๋์์ง๋๋ฐ, ์ด๊ฒ์ ๋จ์ ํ ์คํธ๋ฅผ ์ํํ๊ธฐ์ ์์ ๋์ ๊ฐ์ฒด์ ํ๊ฒฝ์ ๊ตฌ์ฑํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๐ ๋ถ๋ฅ๋ณด๋ค ์์ฌ์ํตโ
- ๋ชฉ ๊ฐ์ฒด๋ฅผ ํ์ฉํ TDD๋ ์ ๋ณด ์๋์ ์ด์งํ๋ค. ๋ชฉ ๊ฐ์ฒด๋ ๊ฐ์ฒด ๋ด๋ถ์ ์กด์ฌํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ฒด์ ๋์ ์์(peer), ์ฆ ํด๋น ๊ฐ์ฒด์ ์์กด์ฑ, ์๋ฆผ, ์กฐ์ ์ ๋์์ผ๋ก ๋ง๋ค์ด์ผ ํ๋ค.
- ํ ๊ฐ์ฒด์ ์ธ์ ์์๋ฅผ ๊ฐ์กฐํ๋ ํ ์คํธ๋ ๊ทธ๊ฒ๋ค์ด ์ด์ ์์์ธ์ง, ๊ทธ๋ฆฌ๊ณ ์ด์ ์์๊ฐ ์๋๋ผ๋ฉด ๊ทธ๊ฒ๋ค์ด ๋์ ๊ฐ์ฒด์ ๋ด๋ถ๋ฅผ ๊ตฌ์ฑํด์ผ ํ๋์ง ํ์ ํ๋ ๋ฐ ๊ธฐ์ฌํ๋ค.
๐ ๊ฐ ํ์ โ
- ๊ฐ ํ์ ์ ๋์ ํ ๋ ์ธ ๊ฐ์ง ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฒ์ ํ์ฉํ๋๋ฐ, ๋ฐ๋ก ๋ถํด, ํ์, ํฌ์ฅ์ด ์ฌ๊ธฐ์ ํด๋นํ๋ค.
๐ถ ๋ถํค(breaking out)โ
- ์ด๋ค ๊ฐ์ฒด์ ์ฝ๋๊ฐ ๋ณต์กํด์ง๊ณ ์๋ค๋ฉด ๊ทธ๊ฒ์ ํด๋น ์ฝ๋๊ฐ ๋ค์์ ๊ด์ฌ์ฌ๋ฅผ ๊ตฌํํ๊ณ ์์ผ๋ ์ด๋ฅผ ์์ง๋ ฅ ์๋ ํ์์ ๋จ์๋ก ๋ถํดํด ๋์์ด ํ์ ์ผ๋ก ๋ง๋ค์ด๋ด๋ผ ๋ ์ ํธ๋ก ๋ณผ ์ ์๋ค.
๐ถ ํ์(budding off)โ
- ์ฝ๋์์ ์๋ก์ด ๋๋ฉ์ธ ๊ฐ๋ ์ ํ๊ธฐํ๊ณ ์ถ์ ๋ ํ๋ ํ๋๋ง ์๊ฑฐ๋ ํ๋๊ฐ ์๋ฌด๊ฒ๋ ์๋ ์์น์ง์ ์ ํ์ ์ ๋์ ํ๋ค. ์ฝ๋์ ๊ท๋ชจ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ํ๋์ ๋ฉ์๋๋ฅผ ์ถ๊ฐํด ์๋ก์ด ํ์ ์ ์ธ๋ถ ์ฌํญ์ผ๋ก ์ฑ์ฐ๊ณ ์ถ๊ฐํ ๊ฐ ํ์ ์ ์ด์ฉํด ์ฝ๋ ์ถ์ํ ์์ค์ ๋์ธ๋ค.
๐ถ ํฌ์ฅ(bundling up)โ
- ๋ ํจ๊ป ์ทจ๊ธ๋๋ ๊ณต์ฉ ํ๋๊ฐ ํฌํจ๋ ํ์ ์ ์๋ก ๋ง๋ ๋ค. ๋์ค์ ์ ํ์ ์ผ๋ก ํ์๋ฅผ ์ฎ๊ธธ ์๋ ์๋๋ฐ, ์ด๊ฒ์ ๊ฒฐ๊ตญ ์ ํ์ ์ ํฌํจ๋ ํ๋๋ฅผ ๊น๋ํ ์ธํฐํ์ด์ค ๋๋จธ๋ก ๊ฐ์ถ๊ฒ ํด์ค์ ์ ์ฒด๋ ๋ถ๋ถ์ ํฉ๋ณด๋ค ๋จ์ํด์ผ ํ๋ค๋ผ๋ ๊ท์น์ ๋ง์กฑ์ํฌ ๊ฒ์ด๋ค.
๐ ๊ฐ์ฒด๋ ์ด๋์์ ์ค๋๊ฐ?โ
๐ ๋ถํด: ํฐ ๊ฐ์ฒด๋ฅผ ํ๋ ฅ ๊ฐ์ฒด์ ๊ทธ๋ฃน์ผ๋ก ๋๋๊ธฐโ
- ์์ง๋ ฅ ์๋ ๊ธฐ๋ฅ ๋จ์๋ฅผ ์ข ๋ ์์ ํ๋ ฅ ๊ฐ์ฒด๋ก ๋ง๋๋ ์์ ์ ์์ํ๋ค. ๊ทธ๋ ๊ฒ ํ๊ณ ๋๋ฉด ๋ ๋ฆฝ์ ์ผ๋ก ๋จ์ ํ ์คํธ๋ฅผ ํ ์ ์๋ค. ์์ธ๋ฌ ์ ๊ฐ์ฒด๋ก ๋๋๋ ๊ณผ์ ์์ ๋์ง์ด ๋ด๋ ค๋ ์ฝ๋์ ์์กด์ฑ์ ์ดํด๋ณผ ์๋ฐ์ ์๋ค.
- ์ ๋ฆฌ ์์
์ ์ง์ฐํ๋ ๊ฒ๊ณผ ๊ด๋ จํด์๋ ๋ ๊ฐ์ง ์ฐ๋ ค๊ฐ ์๋ค.
- ๋ญ๊ฐ๋ฅผ ํ๊ธฐ ์ ๊น์ง ์ผ๋ง๋ ๊ธฐ๋ค๋ ค์ผ ํ๋๊ฐ๋ค. ๋๋ฌด ๋ง์ ์ฝ๋๊ฐ ์๋๊ฐ ๋ถ๋ถ๋ช ํด์ ํ์ด ๊ฐ๋นํ ์ ์์ ๋ ์ ๋ฆฌ ๋น์ฉ์ ์น๋ฌ์ผ ํ๋ ์ํฉ๊น์ง ์ฌ ์ ์๋ค.
- ์ด๋ฌํ ์ฝ๋๋ฅผ ์ํ์ฉ ์ฝ๋๋ก ์ฌ๊ธฐ๋ ๊ฒ ๋์ ๋๋ ์๋ค๋ ๊ฒ์ด๋ค. ์ฆ, ์ผ๋จ ์ด๋ป๊ฒ ํด์ผ ํ ์ง ์๋ฉด ์๋๋๋ก ๋๋ฆฐ ๋ค์ ๊น๋ํ๊ฒ ๋ค์ ๊ตฌํํ๋ ํธ์ด ๋ซ๋ค๋ ๋ง์ด๋ค.
๐ ํ์: ๊ฐ์ฒด๊ฐ ํ์๋ก ํ๋ ์ ๊ท ์๋น์ค ์ ์์ ํด๋น ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ์ ๊ฐ์ฒด ์ถ๊ฐโ
- ์ฝ๋๊ฐ ์ข ๋ ์์ ํ๋๊ณ ์ด๋ ์ ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ๊ณ ๋๋ฉด ์๋ก์ด ํ์ ์ ํ์ค์ ์ผ๋ก ๋์ง์ด๋ด๋ ์์ผ๋ก ๊ทธ๊ฒ๋ค์ ๋ฐ๊ฒฌํ๋ค. ์ด๋ ์ด๋ค ์๋ก์ด ๊ธฐ๋ฅ์ ์ค๊ณ ์์น์ ์ํ์ง ์๋๋ค๋ ์ฌ์ค์ ๋ฐ๊ฒฌํ ์ง๋ ๋ชจ๋ฅธ๋ค.
- ์ด๋ฌํ ๊ฒฝ์ฐ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด ๊ฐ์ฒด ๊ด์ ์์ ํ์ํ ์๋น์ค๋ฅผ ์ ์ํ๋ค. ๋์ ๊ฐ์ฒด์ ํด๋น ๊ฐ์ฒด์ ํ๋ ฅ ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ธฐ์ ํ๋ ๋ฐ ๋์์ด ๋๋ ๋ชฉ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ์๋น์ค๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ ์ ์๋ก์ด ํ์์ ๋ํ ํ ์คํธ๋ฅผ ์์ฑํ๋ค.
- ๊ทธ๋ฌ๊ณ ๋์ ๊ทธ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋๋ฐ, ์ด ๊ณผ์ ์์ ํด๋น ๊ฐ์ฒด๊ฐ ํ์๋ก ํ๋ ์๋น์ค๊ฐ ๋ญ์ง ํ์ ํ๋ค. ๊ธฐ์กด ๊ฐ์ฒด, ๋๋ ์์ฒด์ ์ผ๋ก ๋ง๋ API๋ ์๋ ํํฐ์ API์ ์ฐ๊ฒฐํ๊ธฐ ์ ๊น์ง ์ด์ฒ๋ผ ํ๋ ฅ ๊ฐ์ฒด์ ๊ด๊ณ๋ก ๊ตฌ์ฑ๋ ํ๋ฆ์ ๋ฐ๋ฅธ๋ค. ๋ฐ๋ก ์ด๋ฐ ์์ผ๋ก ์ ๋ ฅ์์ ์ถ๋ ฅ ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ฐํ๋ผ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด๋ค.
- ์ด๋ฅผ ์ฃผ๋ฌธํ ์ค๊ณ๋ผ๊ณ ์๊ฐํ๋๋ฐ ์ฆ, ์ด๋ค ํด๋์ค์์ ์ ๊ณตํด์ผ ํ ๊ธฐ๋ฅ์ ๋ฐ์ด๋ด์ง ์๊ณ ํด๋ผ์ด์ธํธ์ ์๊ตฌ ์ฌํญ์ผ๋ก๋ถํฐ ์ธํฐํ์ด์ค์ ํด๋น ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ฅผ ํ์ค๋ก ๋์ง์ด๋ด๋ ๊ฒ์ด๋ค.
๐ ํฌ์ฅ: ๊ด๋ จ ๊ฐ์ฒด๋ฅผ ํฌํจ ๊ฐ์ฒด๋ก ๊ฐ์ถ๊ธฐโ
- ์ด๊ฒ์ ์ ์ฒด๋ ๋ถ๋ถ์ ํฉ๋ณด๋ค ๋จ์ํด์ผ ํ๋ค ๊ท์น์ ์์ฉ์ด๋ค. ํจ๊ป ๋์ํ๋ ๊ด๋ จ ๊ฐ์ฒด์ ์งํฉ์ด ์์ ๊ฒฝ์ฐ ๊ทธ๊ฒ๋ค์ ํ๋๋ก ํฌํจํ๋ ๊ฐ์ฒด๋ก ํฌ์ฅํ ์ ์๋ค.
- ์ ๊ฐ์ฒด๋ ๊ธฐ์กด ์งํฉ์ ๋ณต์ก์ฑ์ ์ถ์ํ ๋๋จธ๋ก ๊ฐ์ถฐ์ ์ข ๋ ๋์ ์์ค์์ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์๊ฒ ํด์ค๋ค.
- ์์์ ์ธ ๊ฐ๋
์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ง๋๋ ๊ณผ์ ์ ๋ค๋ฅธ ์ข์ ํจ๊ณผ
- ๋๋ฉ์ธ์ ์ข ๋ ์ ์ดํดํ๋ ๋ฐ ๋ณดํฌ์ด ๋๋ ์ด๋ฆ์ ๊ฐ๋ ์ ๋ถ์ฌํด์ผ ํ๋ค.
- ๊ฐ๋ ์ ๊ฒฝ๊ณ๋ฅผ ํ์ธํ ์ ์์ผ๋ฏ๋ก ์์กด์ฑ์ ๋ฒ์๋ฅผ ์ข ๋ ๋ช ํํ๊ฒ ํ์ ํ ์ ์๋ค.
- ๋จ์ ํ ์คํธ๋ฅผ ์ข ๋ ์ ํํ๊ฒ ์ํํ ์ ์๋ค.
๐ ์ธํฐํ์ด์ค๋ก ๊ด๊ณ๋ฅผ ์๋ณํ๋ผโ
- ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํด ๊ฐ์ฒด๊ฐ ์ํํ ์ ์๋ ์ญํ ์ ์ด๋ฆ์ ๋ถ์ฌํ๊ณ ๊ฐ์ฒด๊ฐ ๋ฐ์๋ค์ผ ๋ฉ์์ง๋ฅผ ๊ธฐ์ ํ๋ค.
- ์ธํฐํ์ด์ค์ ์ ์ธ๋๋ ๋ฉ์๋ ์๊ฐ ์ ์์๋ก ํด๋น ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฐ์ฒด์ ์ญํ ์ด ๋ช ํํด์ง๋ค. ๊ทธ๋ฌ๋ฉด ํน์ ํธ์ถ์ ๋ํด ๋ค๋ฅธ ์ด๋ค ๋ฉ์๋๊ฐ ๊ด๋ จ์ด ์๋์ง, ์ด๋ค ๋ฉ์๋๊ฐ ํธ์๋ฅผ ์ํด ํฌํจ๋๋์ง์ ๋ํด ๊ฑฑ์ ํ์ง ์์๋ ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ฝ๋์์ ์ธํฐํ์ด์ค๋ฅผ ์ฐ๊ฒ ํ๋ฉด ํด๋น ์ธํฐํ์ด์ค์ ๊ตฌํ์ ๊ดํ ๋ถํ์ํ ์ ๋ณด๊ฐ ์๋ ํ์์ ๋ฐฉ์งํ ์ ์๋ค. ์ด๋ก์จ ๊ฐ์ฒด ๊ฐ์ ์์์ ์ธ ๊ฒฐํฉ์ด ์ต์ํ๋๊ณ ์ฝ๋๋ ๋ณ๊ฒฝํ๊ธฐ ์ฌ์ด ์ํ์ ๋จธ๋ฌผ๊ฒ ๋๋ค.
๐ ์ธํฐํ์ด์ค๋ ๋ฆฌํฉํฐ๋งํ๋ผโ
- ๋น์ทํ๊ฒ ๋ณด์ด๋ ์ธํฐํ์ด์ค๋ฅผ ๋ถ๋ฆฌํ๊ธฐ๋ก ํ๋ค๋ฉด ํด๋น ์ธํฐํ์ด์ค์ ์ด๋ฆ์ ์ฌ๊ณ ํด ๋ณด๊ธฐ์ ์ข์ ์์ ์ด๋ค. ์ด ๊ณผ์ ์์ ์ธํฐํ์ด์ค ๊ฐ์ด๋ฐ ์ต์ํ ํ๋๋ ์ข ๋ ์ ์ ํ ์ด๋ฆ์ ๊ฐ๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
- ์ธํฐํ์ด์ค ๋ฆฌํฉํฐ๋ง์ ๊ณ ๋ คํ ๋ ํ ๋ฒ์ ์์ ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ธฐ ์์ํ ๋๋ค. ์ด๋ฅผํ ๋ฉด, ๊ตฌํํ๋ ํด๋์ค์ ๊ตฌ์กฐ๊ฐ ๋ถ๋ถ๋ช ํ๋ค๋ ์ฌ์ค์ ์๊ฒ๋๋ค๋ฉด ์๋ง ํด๋น ์ธํฐํ์ด์ค์ ์ฑ ์์ด ๋๋ฌด ๋ง์ ํ ๊ณ , ์ด๋ ์ธํฐํ์ด์ค๊ฐ ๋๋ฌด ์ฅํฉํด์ ์ชผ๊ฐ์ผ ํ๋ค๋ ํํธ์ผ์ง๋ ๋ชจ๋ฅธ๋ค.
๐ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํด ์์คํ ์ ํ์๋ฅผ ๊ธฐ์ ํ๋ผโ
- ํ ์คํธ๋ ๊ฐ ๊ฐ์ฒด๊ฐ ์ด๋ป๊ฒ ํ๋ํด์ผ ํ๊ณ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ด๋ป๊ฒ ๊ฒฐํฉ๋ ์ ์๋์ง ์ดํดํ๋ ๋ฐ ๋ณดํฌ์ด ๋๋ค. ๊ทธ๋ฌ๊ณ ๋๋ฉด ์ ์์ค ๊ฐ์ฒด๋ฅผ ์ข๋ ๊ธฐ๋ฅ์ด ํ๋ถํ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์๋ก ์ฌ์ฉํ ์ ์๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ๊ฐ์ฒด์ ๋ง์ด๋ค.
- ์ด ์ ๊ทผ๋ฒ์ ์ข์ ์ ์ ๋น๊ต์ ์ ์ ์ฝ๋๋ก๋ ์ ์ฐํ ์ ํ์ผ์ด์ ๊ตฌ์กฐ๊ฐ ๋ง๋ค์ด์ง๋ค๋ ๊ฒ์ด๋ค. ํนํ ์ฝ๋๊ฐ ์ฌ๋ฌ ๊ด๋ จ ์๋๋ฆฌ์ค๋ฅผ ์ง์ํด์ผ ํ ๋ ์ ์ ํ ๋ฐฉ๋ฒ์ด๋ค. ์๋ก ์ฐฉํ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํด ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๐ ๊ณ ์์ค ํ๋ก๊ทธ๋๋ฐ์ ์ํ ๋๋นโ
- ์ฐ๋ฆฌ๋ ์ฝ๋๋ฅผ ๋ ๊ฐ์ง ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑํ๋ค.
- ํ๋๋ ๊ฐ์ฒด์ ๊ทธ๋ํ์ ํด๋นํ๋ ๊ตฌํ ๊ณ์ธต(implementation layer)์ผ๋ก ์ด ๊ณ์ธต์ ํ์๋ ํด๋น ๊ณ์ธต์ ์ํ๋ ๊ฐ์ฒด๊ฐ ์ด๋ฒคํธ์ ์ด๋ป๊ฒ ๋ฐ์ํ๋๊ฐ๋ก ๊ฒฐ์ ๋๋ค.
- ๋ค๋ฅธ ํ๋๋ ๊ตฌํ ๊ณ์ธต์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด๋ด๋ ์ ์ธ์ ๊ณ์ธต(declarative layer)์ผ๋ก ์๊ทธ๋งํ ํธ์์ฑ ๋ฉ์๋์ ๋ฌธ๋ฒ์ ์ด์ฉํด ๊ฐ ๋ถ๋ถ์ ์ฉ๋๋ฅผ ๊ธฐ์ ํ๋ค.
- ์ ์ธ์ ๊ณ์ธต์ ์ฝ๋์์ ํ๋ ค๋ ์ผ์ด ๋ฌด์์ธ์ง๋ฅผ ๊ธฐ์ ํ๋ ๋ฐ๋ฉด, ๊ตฌํ ๊ณ์ธต์์๋ ์ฝ๋๊ฐ ๊ทธ๊ฒ์ ์ด๋ป๊ฒ ํ๋์ง๋ฅผ ๊ธฐ์ ํ๋ค.
- ๊ตฌํ ๊ณ์ธต์์๋ ๊ด๋ก์ ์ธ ๊ฐ์ฒด ์งํฅ ์คํ์ผ ์ง์นจ์ ๊ณ ์ํ๋ ๋ฐ๋ฉด, ์ ์ธ์ ๊ณ์ธต์ ๊ฒฝ์ฐ์๋ ์ข ๋ ์ตํต์ฑ์ด ์๋ค. ์ฆ, ์ด์ฐจ ์ ๋ณต๊ณผ ๊ฐ์ ๋ฉ์๋ ํธ์ถ ์ฐ์๋ ์ ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค๋ ๊ฒ์ด๋ค.
// jMock
context.checking(new Expectations() {{
oneOf(example).doSomething(with(any(String.class)));
}});
- ๊ฒฐ๊ตญ ๋ชฉํ๋ ๋ ์ ์ ์ฝ๋๋ก ๋ ๋ง์ ์ผ์ ํด๋ด๋ ๊ฒ์ด๋ค. ์ค์ค๋ก๊ฐ ์ ์ด ํ๋ฆ๊ณผ ๋ฐ์ดํฐ ์กฐ์์ด๋ผ๋ ์ธก๋ฉด์ ํ๋ก๊ทธ๋๋ฐ์์ ๋ ์์ ํ๋ก๊ทธ๋จ์ ๊ฐ์ง๊ณ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋, ์ฆ ๊ฐ์ฒด๊ฐ ๋ ์์ ํ์์ ๋จ์๋ฅผ ํ์ฑํ๋ ์์ค์ ์ด๋ฅด๊ธฐ๋ฅผ ๊ฐ๊ตฌํ๋ค.
๐ ๊ทธ๋ผ ํด๋์ค๋?โ
- ํด๋์ค๋ณด๋ค ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์กฐํ๋๋ฐ, ๋ค๋ฅธ ๊ฐ์ฒด์์ ๋ณด๋ ๊ฒ์ ๊ฒฐ๊ตญ ์ธํฐํ์ด์ค์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, ๊ฐ์ฒด์ ํ์ ์ ํด๋น ๊ฐ์ฒด๊ฐ ์ํํ๋ ์ญํ ๋ก ๊ท์ ๋๋ค.
- ๊ฐ์ฒด์ ๋ํ ํด๋์ค๋ฅผ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ผ๋ก ๋ณธ๋ค. ํด๋์ค๋ ํ์ ์ ๊ตฌํํ๋ ํ ๋ฐฉ์์ด์ง, ํ์ ์์ฒด๊ฐ ์๋๋ค.
- ์ฐ๋ฆฌ๋ ๊ณตํต์ ์ธ ํ์๋ฅผ ์ถ๋ ค๋์ผ๋ก์จ ๊ฐ์ฒด ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํ์ ํ๋ฉฐ, ๊ฐ๋ฅํ๋ค๋ฉด ์์์ผ๋ก ๋ฆฌํฉํฐ๋งํ๋ ๋ฐฉ์์ ์ ํธํ๋ค. ์ด๋ ์์์ผ๋ก ์ฝ๋๋ฅผ ๋ ์ ์ฐํ๊ณ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.