(* ํผ๋๋ฐฑ์ ์ ๋ฌธ์ด ์๋, ์ผ๋ถ๋ฅผ ๋ฐ์ทํ์ฌ ์ ๋ฆฌํ์์ต๋๋ค.)
๐ ์ ๋ฆฌ ๋ด์ฉ
- 1์ฃผ ์ฐจ ๊ณตํต ํผ๋๋ฐฑ
- 2์ฃผ ์ฐจ ๊ณตํต ํผ๋๋ฐฑ
- 3์ฃผ ์ฐจ ๊ณตํต ํผ๋๋ฐฑ
๐ฏ ์ ๋ฆฌ ๋ชฉ์
๊ณต๋ถํด์ผ ํ ๊ฒ์ด ๋ฌด์์ธ์ง ํผ๋๋ฐฑ์ ํตํด ๋ฐฉํฅ์ฑ์ ์ก๊ณ , ๋ถ์กฑํ ๋ถ๋ถ์ ๋ํ ํ์ต์ ์งํํ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํจ.
- ๋ฏธ์ ๊ตฌํ์์ ๋์น ๋ถ๋ถ์ ํ์ธํ๊ณ ๋ณด์ํ์.
- ํผ๋๋ฐฑ๊ณผ ํจ๊ป ์ ๊ณต๋ ์๋ฃ๋ฅผ ๋ณต์ตํ์.
[ 1๏ธโฃ 1์ฃผ ์ฐจ ๊ณตํต ํผ๋๋ฐฑ ]
- ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์๋ฏธ ์๊ฒ ์์ฑํ๋ค
์ปค๋ฐ ๋ฉ์์ง์ ํด๋น ์ปค๋ฐ์์ ์์ ํ ๋ด์ฉ์ ๋ํ ์ดํด๊ฐ ๊ฐ๋ฅํ๋๋ก ์์ฑํ์.
- ์ด๋ฆ์ ํตํด ์๋๋ฅผ ๋๋ฌ๋ธ๋ค
์ฐ์๋ ์ซ์๋ฅผ ๋ง๋ถ์ด๊ฑฐ๋(a1, a2, ..., aN), ๋ถ์ฉ์ด(Info, Data, a, an, the)๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ ์ ์ ํ์ง ์๋ค.
์ด๋ฆ์ ํตํด ๋ณ์์ ์ญํ , ํจ์์ ์ญํ , ํด๋์ค์ ์ญํ ์ ๋ํ ์๋๋ฅผ ๋๋ฌ๋ด๊ธฐ ์ํด ๋ ธ๋ ฅํ์.
- ์ถ์ฝํ์ง ์๋๋ค
ํด๋์ค์ ๋ฉ์๋ ์ด๋ฆ์ ํ ๋ ๋จ์ด๋ก ์ ์งํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ๋ฌธ๋งฅ์ ์ค๋ณตํ๋ ์ด๋ฆ์ ์์ ํ์.(๊ฐ์ฒด ์งํฅ ์ํ ์ฒด์กฐ ์์น 5)
- IDE์ ์ฝ๋ ์๋ ์ ๋ ฌ ๊ธฐ๋ฅ์ ํ์ฉํ๋ค
๋์น ๊ณต๋ฐฑ๋ ์ก์์ฃผ์ด ๋ ๊น๋ํ ์ฝ๋๋ฅผ ๋ณผ ์ ์๋ค.
- Java์์ ์ ๊ณตํ๋ API๋ฅผ ์ ๊ทน ํ์ฉํ๋ค
ํจ์(๋ฉ์๋)๋ฅผ ์ง์ ๊ตฌํ ์ ์ Java API์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ธ์ง ๊ฒ์์ ๋จผ์ ํด๋ณด์.
Ex: List์์ join
- ๋ฐฐ์ด ๋์ Java Collection์ ์ฌ์ฉํ๋ค
Java Collection ์๋ฃ๊ตฌ์กฐ(List, Set, Map ๋ฑ)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ ๋ ๋ค์ํ API๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
Ex: List์์ contains
[ 2๏ธโฃ 2์ฃผ ์ฐจ ๊ณตํต ํผ๋๋ฐฑ ]
- README.md๋ฅผ ์์ธํ ์์ฑํ๋ค
ํด๋น ํ๋ก์ ํธ๊ฐ ์ด๋ ํ ํ๋ก์ ํธ์ด๋ฉฐ, ์ด๋ค ๊ธฐ๋ฅ์ ๋ด๊ณ ์๋์ง ๊ธฐ์ ํ์.
- ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ฌ๊ฒํ ํ๋ค
๊ธฐ๋ฅ ๋ชฉ๋ก์ ํด๋์ค ์ค๊ณ์ ๊ตฌํ, ํจ์(๋ฉ์๋) ์ค๊ณ์ ๊ตฌํ๊ณผ ๊ฐ์ด ๋๋ฌด ์์ธํ๊ฒ ์์ฑํ์ง ์๋๋ค.
์ ์์ ์ธ ๊ฒฝ์ฐ๋ ์ค์ํ์ง๋ง, ์์ธ์ ์ธ ์ํฉ๋ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ ๋ฆฌํ๋ค.
- ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ ๋ฐ์ดํธํ๋ค
์์ํ ๋ ๋ชจ๋ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์๋ฒฝํ๊ฒ ์ ๋ฆฌํด์ผ ํ๋ค๋ ๋ถ๋ด์ ๊ฐ์ง๊ธฐ๋ณด๋ค ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉด์ ๋ฌธ์๋ฅผ ๊ณ์ ์ ๋ฐ์ดํธํ๋ค.
์ฃฝ์ ๋ฌธ์๊ฐ ์๋๋ผ ์ด์์๋ ๋ฌธ์๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋ ธ๋ ฅํ๋ค.
- ๊ฐ์ ํ๋ ์ฝ๋ฉํ์ง ์๋๋ค
์์(static final)๋ฅผ ๋ง๋ค๊ณ ์ด๋ฆ์ ๋ถ์ฌํด ์ด ๋ณ์์ ์ญํ ์ด ๋ฌด์์ธ์ง ์๋๋ฅผ ๋๋ฌ๋ด์.
- ๊ตฌํ ์์๋ ์ฝ๋ฉ ์ปจ๋ฒค์ ์ด๋ค
ํด๋์ค๋ ์์, ๋ฉค๋ฒ ๋ณ์, ์์ฑ์, ๋ฉ์๋ ์์ผ๋ก ์์ฑํ์.
- ๋ณ์ ์ด๋ฆ์ ์๋ฃํ์ ์ฌ์ฉํ์ง ์๋๋ค
๋ณ์ ์ด๋ฆ์ ์๋ฃํ, ์๋ฃ ๊ตฌ์กฐ ๋ฑ์ ์ฌ์ฉํ์ง ๋ง์.
- ํ ํจ์๊ฐ ํ ๊ฐ์ง ๊ธฐ๋ฅ๋ง ๋ด๋นํ๊ฒ ํ๋ค
ํจ์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง๋ค๋ฉด ํ ํจ์์์ ์ฌ๋ฌ ์ผ์ ํ๋ ๊ฒฝ์ฐ์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ ์ ํ์ธํ๊ณ ์ ์ ํ๊ฒ ๋ถ๋ฆฌํด๋ณด์.
ํจ์ ๊ธธ์ด๋ 10-15๋ผ์ธ์ผ๋ก ์์ฑํด๋ณด์.
- ํ ์คํธ๋ฅผ ์์ฑํ๋ ์ด์ ์ ๋ํด ๋ณธ์ธ์ ๊ฒฝํ์ ํ ๋๋ก ์ ๋ฆฌํด๋ณธ๋ค
ํ ์คํธ๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ํตํด ๋์ ์ฝ๋์ ๋ํด ๋น ๋ฅด๊ฒ ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์๊ณ , ํ์ต ๋๊ตฌ๋ก๋ ํ์ฉํ ์ ์๋ค.
- ์ฒ์๋ถํฐ ํฐ ๋จ์์ ํ ์คํธ๋ฅผ ๋ง๋ค์ง ์๋๋ค
ํ ์คํธ์ ์ค์ํ ๋ชฉ์ ์ค ํ๋๋ ๋ด๊ฐ ์์ฑํ๋ ์ฝ๋์ ๋ํด ๋น ๋ฅด๊ฒ ํผ๋๋ฐฑ์ ๋ฐ๋ ๊ฒ์ด๋ค.
๋ฌธ์ ๋ฅผ ์๊ฒ ๋๋๊ณ , ๊ทธ ์ค ํต์ฌ ๊ธฐ๋ฅ์ ๊ฐ๊น์ด ๋ถ๋ถ๋ถํฐ ์๊ฒ ํ ์คํธ๋ฅผ ๋ง๋ค์ด ๋๊ฐ๋ค.
+ ) ํผ๋๋ฐฑ ์ฒจ๋ถ ์๋ฃ ๊ณต๋ถ ๋ฐ ์ ๋ฆฌ
1) '์ซ์ ์ผ๊ตฌ with ์๋ฐ ๊ธฐ์ด ๊ฐ์' ์ ๋ฆฌ
๋
ธ์
์ ์ ๋ฆฌํ ๊ฒ ๋ค์ ๋ณต์ต ๊ฒธ ์ ๋ฆฌ
2) 'ํ์ตํ
์คํธ๋ฅผ ํตํด JUnit ํ์ตํ๊ธฐ' PDF ์ ๋ฆฌ
assertj: contains(), containsExactly()
JUnit: @DisplayName, @ParameterizedTest, @CsvSource
์์ฃผ๋ก ์ ๋ฆฌ
[ 3๏ธโฃ 3์ฃผ ์ฐจ ๊ณตํต ํผ๋๋ฐฑ ]
- ํจ์(๋ฉ์๋) ๋ผ์ธ์ ๋ํ ๊ธฐ์ค
main() ํจ์์๋ ํด๋น๋๊ณ , ๊ณต๋ฐฑ ๋ผ์ธ๋ ํ ๋ผ์ธ์ ํด๋นํ๋ ์กฐ์ฌํ์.
- ๋ฐ์ํ ์ ์๋ ์์ธ ์ํฉ์ ๋ํด ๊ณ ๋ฏผํ๋ค
์์ธ ์ํฉ์ ์ฌ๋ฌ๊ฐ์ง ๊ณ ๋ฏผํด ๋ณด๊ณ ์ด์ ๋ํด ์ฒ๋ฆฌํ๋๋ก ํ์.
- ๋น์ฆ๋์ค ๋ก์ง๊ณผ UI ๋ก์ง์ ๋ถ๋ฆฌํ๋ค
๋จ์ผ ์ฑ ์์ ์์น์ ์๋ฐฐ๋์ง ์๋๋ก ํ์.
๊ฐ์ฒด์ ์ํ๋ฅผ ๋ณด๊ธฐ ์ํ ๋ก๊ทธ ๋ฉ์์ง ์ฑ๊ฒฉ์ด ๊ฐํ๋ค๋ฉด toString()์ ํตํด ๊ตฌํํ์.
View์์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ผ๋ฉด getter ๋ฉ์๋๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค.
- ์ฐ๊ด์ฑ์ด ์๋ ์์๋ static final ๋์ enum์ ํ์ฉํ๋ค
- final ํค์๋๋ฅผ ์ฌ์ฉํด ๊ฐ์ ๋ณ๊ฒฝ์ ๋ง๋๋ค
์๋ฐ์ final ํค์๋๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ ๋ณ๊ฒฝ์ ๋ง๋๋ก ํ์.
- ๊ฐ์ฒด์ ์ํ ์ ๊ทผ์ ์ ํํ๋ค
์ธ์คํด์ค ๋ณ์์ ์ ๊ทผ ์ ์ด์๋ private๋ก ๊ตฌํํ์.
- ๊ฐ์ฒด๋ ๊ฐ์ฒด์ค๋ฝ๊ฒ ์ฌ์ฉํ๋ค
์ํ ๊ฐ์ผ๋ก ๊ฐ์ง๋ ๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ฅผ get์ผ๋ก ๊บผ๋ด์ง ๋ง๊ณ ๋ฉ์์ง๋ฅผ ๋์ง๋๋ก ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๋ ๊ฐ์ฒด๊ฐ ์ผํ๋๋ก ํ์.
+ ) ํผ๋๋ฐฑ ์ฒจ๋ถ ์๋ฃ ๊ณต๋ถ ๋ฐ ์ ๋ฆฌ
1) 'getter๋ฅผ ์ฌ์ฉํ๋ ๋์ ๊ฐ์ฒด์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด์' ์ ๋ฆฌํ๊ธฐ
https://tecoble.techcourse.co.kr/post/2020-04-28-ask-instead-of-getter/
- ํ๋(์ธ์คํด์ค ๋ณ์)์ ์๋ฅผ ์ค์ด๊ธฐ ์ํด ๋ ธ๋ ฅํ๋ค
ํ๋์ ์ค๋ณต์ด ์๊ฑฐ๋, ๋ถํ์ํ ํ๋๊ฐ ์๋์ง ํ์ธํด ํ๋์ ์๋ฅผ ์ต์ํํ์.
- ์ฑ๊ณตํ๋ ์ผ์ด์ค ๋ฟ๋ง ์๋๋ผ ์์ธ์ ๋ํ ์ผ์ด์ค๋ ํ ์คํธํ๋ค
ํนํ ํ๋ก๊ทธ๋จ์์ ๊ฒฐํจ์ด ์์ฃผ ๋ฐ์ํ๋ ๋ถ๋ถ ์ค ํ๋๋ ๊ฒฝ๊ณ๊ฐ์ด๋ฏ๋ก ์ด ๋ถ๋ถ์ ๊ผผ๊ผผํ๊ฒ ํ์ธํ์.
- ํ ์คํธ ์ฝ๋๋ ์ฝ๋๋ค
ํ ์คํธ ์ฝ๋๋ ์ฝ๋์ด๋ฏ๋ก ๋ฆฌํฉํฐ๋ง์ ํตํด ๊ฐ์ ํด๋๊ฐ์.
ํนํ ๋ฐ๋ณต์ ์ผ๋ก ํ๋ ๋ถ๋ถ์ด ์ค๋ณต๋์ง ์๋๋ก, @ValuseSource์ @ParameterizedTest๋ฅผ ์ฌ์ฉํ์.
- ๋จ์ ํ ์คํธํ๊ธฐ ์ด๋ ค์ด ์ฝ๋๋ฅผ ๋จ์ ํ ์คํธํ๊ธฐ
์ฃผ์ ์์ ์ด๋ฏธ์ง๋ฅผ ์ฐธ๊ณ ํด๋ณด๊ณ , ํ ์คํธํ๊ธฐ ์ด๋ ค์ด ๊ฒ์ ํด๋์ค ๋ด๋ถ๊ฐ ์๋ ์ธ๋ถ๋ก ๋ถ๋ฆฌํ๋ ์๋๋ฅผ ํด๋ณด์.
+ ) ํผ๋๋ฐฑ ์ฒจ๋ถ ์๋ฃ ๊ณต๋ถ ๋ฐ ์ ๋ฆฌ
1) '๋ฉ์๋ ์๊ทธ๋์ฒ๋ฅผ ์์ ํ์ฌ ํ ์คํธํ๊ธฐ ์ข์ ๋ฉ์๋๋ก ๋ง๋ค๊ธฐ' ์ ๋ฆฌํ๊ธฐ
https://tecoble.techcourse.co.kr/post/2020-05-07-appropriate_method_for_test_by_parameter/
'์ฐ์ํํ ํฌ์ฝ์ค 5๊ธฐ ๋ฐฑ์๋ ํ๋ฆฌ์ฝ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฐํ ์ฝ 5๊ธฐ ํ๋ฆฌ์ฝ์ค] MVC ํจํด (0) | 2022.11.30 |
---|---|
[์ฐํ ์ฝ 5๊ธฐ ํ๋ฆฌ์ฝ์ค] ์ซ์ ์ผ๊ตฌ with ์๋ฐ ๊ธฐ์ด ๊ฐ์ ์ ๋ฆฌ (0) | 2022.11.27 |
[์ฐํ ์ฝ 5๊ธฐ ํ๋ฆฌ์ฝ์ค] ์ฐธ์ฌ ํ๊ธฐ (0) | 2022.11.24 |
[์ฐํ ์ฝ 5๊ธฐ ํ๋ฆฌ์ฝ์ค] 4์ฃผ์ฐจ: ๋ค๋ฆฌ ๊ฑด๋๊ธฐ (0) | 2022.11.24 |
[์ฐํ ์ฝ 5๊ธฐ ํ๋ฆฌ์ฝ์ค] 3์ฃผ์ฐจ: ๋ก๋ (0) | 2022.11.17 |