3. ํจ์
์๊ฒ ๋ง๋ค์ด๋ผ
์ค์ฒฉ ๊ตฌ์กฐ๊ฐ ์๊ธธ๋งํผ ํจ์๊ฐ ์ปค์ ธ์๋ ์๋๋ค๋ ๋ป์ด๋ค.
ํจ์์์ ๋ค์ฌ์ฐ๊ธฐ ์์ค์ 1๋จ์ด๋ 2๋จ์ ๋์ด์๋ฉด ์ ๋๋ค.
๋น์ฐํ ๋ง์ด์ง๋ง, ๊ทธ๋์ผ ํจ์๋ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฌ์์ง๋ค.
ํ ๊ฐ์ง๋ง ํด๋ผ
ํจ์๋ ํ ๊ฐ์ง๋ฅผ ํด์ผ ํ๋ค.
๊ทธ ํ ๊ฐ์ง๋ฅผ ์ ํด์ผ ํ๋ค.
๊ทธ ํ ๊ฐ์ง๋ง์ ํด์ผ ํ๋ค.
ํจ์ ๋น ์ถ์ํ ์์ค์ ํ๋๋ก
ํจ์๊ฐ ํ์คํ ํ ๊ฐ์ง ์์
๋ง ํ๋ ค๋ฉด ํจ์ ๋ด ๋ชจ๋ ๋ฌธ์ฅ์ ์ถ์ํ ์์ค์ด ๋์ผํด์ผ ํ๋ค.
ํ ํจ์ ๋ด์ ์ถ์ํ ์์ค์ ์์ผ๋ฉด ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ด ํท๊ฐ๋ฆฐ๋ค.
ํน์ ํํ์ด ๊ทผ๋ณธ ๊ฐ๋
์ธ์ง, ์๋๋ฉด ์ธ๋ถ์ฌํญ์ธ์ง ๊ตฌ๋ถํ๊ธฐ ์ด๋ ค์ด ํ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๊ตฌ๋ถํ๊ธฐ ์ด๋ ค์์ง๋ฉด ์ธ๋ถ์ฌํญ์ ์ธ๋ถ์ฌํญ์ ๋ ๋ถ์ด๋ ๋ณต์กํ ํจ์๊ฐ ๋๋ค.
์์์ ์๋๋ก ๋ด๋ ค๊ฐ๊ธฐ ๊ท์น
์ฝ๋๋ ์์์ ์๋๋ก ์ด์ผ๊ธฐ์ฒ๋ผ ์ฝํ์ผ ์ข๋ค.
ํ ํจ์ ๋ค์์๋ ์ถ์ํ ์์ค์ด ํ ๋จ๊ณ ๋ฎ์ ํจ์๊ฐ ์จ๋ค,
์ฆ ์์์ ์๋๋ก ํ๋ก๊ทธ๋จ์ ์ฝ์ผ๋ฉด ํจ์ ์ถ์ํ ์์ค์ด ํ ๋ฒ์ ํ ๋จ๊ณ์ฉ ๋ฎ์์ง๋ค.
์์ ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
testableHtml -> SetupTeardownIncluder ์ข์ ์ด๋ฆ์ด ์ฃผ๋ ๊ฐ์น๋ ๊ฐ์กฐํด๋ ๋ชจ์๋ฅด์ง ์๋ค.
ํจ์ ์ธ์
ํจ์์์ ์ด์์ ์ธ ์ธ์ ๊ฐ์๋ 0๊ฐ(๋ฌดํญ) ์ด๋ค.
๋ค์์ 1๊ฐ, ๋ค์์ 2๊ฐ์ด๋ค. 3ํญ์ ๊ฐ๋ฅํ๋ฉด ํผํ๋ ๊ฒ์ด ์ข๊ณ , 4ํญ ์ด์์ผ ๊ฒฝ์ฐ์๋ ํน๋ณํ ์ด์ ๊ฐ ํ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ ํน๋ณํ ์ด์ ๊ฐ ์์ด๋ ์ฌ์ฉํ๊ธธ ์ง์ํ๋ค.
๋ถ์ ํจ๊ณผ๋ฅผ ์ผ์ผํค์ง ๋ง๋ผ!
ํจ์์์ ํ ๊ฐ์ง๋ฅผ ํ๊ฒ ๋ค๊ณ ์ฝ์ํ๊ณ ์ ๋จ ๋ชฐ๋ ๋ค๋ฅธ ์ผ์ ํ๋ค.
์ด๋ ๋๋ก ์์์น ๋ชปํ ๋ณ์๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋ช ๋ น๊ณผ ์กฐํ๋ฅผ ๋ถ๋ฆฌํ๋ผ
ํจ์๋ ๋ญ๊ฐ๋ฅผ ์ํํ๊ฑฐ๋ ๋ญ๊ฐ์ ๋ตํ๊ฑฐ๋ ๋ ์ค ํ๋๋ง ํด์ผ ํ๋ค.
๊ฐ์ฒด ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๋๋ฉด ๊ฐ์ฒด ์ ๋ณด๋ฅผ ๋ฐํํ๊ฑฐ๋ ๋ ์ค ํ๋๋ค. ๋ ๋ค ํ๋ฉด ํผ๋์ ์ด๋ํ๋ค.
์ค๋ฅ ์ฝ๋๋ณด๋ค ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ
if ๋ฅผ ์ฌ์ฉํด์ ์ค๋ฅ ์ฝ๋๋ฅผ ๋ฝ์ ์ฒ๋ฆฌํ๊ธฐ ๋ณด๋ค๋ try/catch ๋ฌธ์ ์ฌ์ฉํด๋ผ,
ํ์ง๋ง try/catch ๋ฌธ๋ ํ๋์ ํจ์ ์์ ์ ์ ๋์๊ณผ ์ค๋ฅ ๋์ ์ ๋ค์๊ธฐ ๋๋ฌธ์ catch ๋ถ๋ถ์ ๋ณ๋์ ํจ์๋ก ๋ฝ์ ๋ด๋ ํธ์ด ์ข๋ค.
๋ฐ๋ณตํ์ง ๋ง๋ผ
(DRY : Don't Repeat Yourself)
์ฝ๋ ๊ธธ์ด๊ฐ ๋์ด๋ ๋ฟ๋ง ์๋๋ผ ํ๋์ ์๊ณ ๋ฆฌ์ฆ์ด ๋ณํ๋ฉด ๋ค ๊ณณ์ด๋ ์๋ด์ผ ํ๋ค.
๊ฒ๋ค๊ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ ํ๋ฅ ๋ ๋ช ๋ฐฐ๋ ๋๋ค.
๊ฒฐ๋ก
์์คํ
์ ํ์ด๋๊ฐ์ผํ ํ๋์ ํฐ ์ด์ผ๊ธฐ๋ผ๊ณ ํ ์ ์๋ค.
ํจ์๋ฅผ ์ ๋ง๋๋ ๊ธฐ๊ต๋ ์ค์ํ์ง๋ง,
๋ถ๋ช
ํ๊ณ ์ ํํ ์ธ์ด๋ก ๊น๋ํ๊ฒ ๋ง์๋จ์ด์ ธ์ผ ์ด์ผ๊ธฐ๋ฅผ ํ์ด๋๊ฐ๊ธฐ๊ฐ ์ฌ์์ง๋ค๋ ์ฌ์ค ๋ํ ๊ธฐ์ตํด์ผ ํ๋ค.
์ฌ๊ฒฌ์ ๋ง๋ถ์ด๋ฉด…?
์ด๋ฒ ์ฅ์ ํจ์์ ๋ํ ์๊ธฐ์๋ค. ์ฃผ ์ธ์ด๊ฐ ์๋ฐ์ธ ๋์๊ฒ๋ ๋ฉ์๋ ๋ผ๊ณ ํ ์ ์์ ๊ฒ ๊ฐ๋ค.
์ฝ์ผ๋ฉด์ ๊ฐ์ฅ ๊ธฐ์ต์ ๋จ๋ ๋ถ๋ถ์ ์๋ฌด๋๋ ํจ์ ์ธ์ ์ด ๋ถ๋ถ์ธ๋ฐ, ์ด์ ์ธ ์ฆ
์ ํ์ฌ์์ ์ฝ์ด๋ฅผ ๋ด๋นํ๋ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๊ฐ ๋ฌด๋ ค 10๊ฐ ์๋ค!!!
๊ธธ์ด๋ ๊ธธ์ด์ ๋ณผ ๋๋ง๋ค ์ด๋ ค์ด ์ฝ๋์๊ณ , ์์ ๋๋๊ณ null ์ด ๋ค์ด๊ฐ๋ ์ธ์๋ ์์๋ค.
์ ๋ง ์ดํดํ๊ธฐ ํ๋ค๊ณ ์ด๋ ค์์ ํญ์ ์ ๊ฑธ ์ชผ๊ฐ๊ณ ์ถ๋ค๋ ์๊ฐ์ ํ๋๋ฐ…
ํ
์คํธ๋ ์๊ณ ๊ทธ ๋ถ๋ถ์ ๊ฑด๋๋ฆด ๊น๋ฅ(?)์ด ์๋์ ๊ฒฐ๊ตญ ๋์ฌ ๋๊น์ง ๋ชป ๊ฑด๋๋ฆฌ๊ณ ๋์๋ค.
๊ทธ ํ์๋ ์ ๋ ํ
์คํธ๋ ์งํํ๊ณ ๋๋ฆ ์ฌ๋ฐ๊ฒ ํ๊ณ ์๋ค.
์ฑ
์์๋ ๋์ค์ง๋ง ์ ๋ํ
์คํธ๋ฅผ ํ๋ค๋ณด๋ฉด assertEqual() ์ ์ฌ์ฉํ ๋๊ฐ ์๋ค. expected ์ actual ์ ์์๊ฐ ํท๊ฐ๋ฆฌ๊ณค ํ๋๋ฐ
๋คํ์ด๋ ์ธํ
๋ฆฌ ์ ์ด์์๋ ํ๋ผ๋ฏธํฐ์ ๋ํ ์ค๋ช
(?) ์ด๋๊น ๊ทธ๋ฐ๊ฒ ์ ๋์ค๋๋ผ