๐Ÿ’ป ๊ณต๋ถ€ ๊ธฐ๋ก/โ˜• Java

Java | TDD

  • -
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž˜ ํ™œ์šฉํ•˜์ง€ ์•Š์•„ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ๊ธฐ์ดˆ๋ฅผ ๋‹ค์กŒ๋‹ค.
 

23. 3. 10.

๐Ÿ“Œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์‹ค์Šต ๐Ÿ“Œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ด์œ ? ๋ฌธ์„œํ™” ์—ญํ™œ ์ฝ”๋“œ์— ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•˜๊ธฐ ์œ„ํ•จ ๋ฆฌํŒฉํ† ๋ง ์‹œ ์•ˆ์ •์„ฑ ํ™•๋ณด ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด ๋” ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋ฅผ ๊ฐ€์ง„ ์„ค

mvmthyun.tistory.com

 

์ด ์ด๋ฏธ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์‹œ์ž‘์„ ํ–ˆ์—ˆ๋Š”๋ฐ ๋‚œ ์™œ ์ด๊ฒƒ์„ ๋ณด๊ณ ๋„ ์•„๋ฌด๊ฒƒ๋„ ๋Š๋‚€ ๊ฒƒ์ด ์—†์—ˆ๋‚˜ ์‹ถ์—ˆ๋‹ค.
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์‹ค์Šต ์ค‘๋ฐ˜๋ถ€๋ฅผ ๋“ค์–ด์„œ๊ณ  ์†์œผ๋กœ ๊นจ๋‹ฌ์Œ์˜ ๊ธ์ •๊ณผ ํ•จ๊ป˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ์ค‘์š”์„ฑ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

TDD

 

Alt + Ins(Insert): Generate ๋ฉ”์„œ๋“œ ์ƒ์„ฑ
Alt + Enter: ์•„์ง ์ƒ์„ฑํ•˜์ง€ ์•Š์€ ํด๋ž˜์Šค ์ด๋ฆ„์— ์ปค์„œ๋ฅผ ๋‘๊ณ  ๋‹จ์ถ•ํ‚ค ์‹คํ–‰(=> ํด๋ž˜์Šค ์ƒ์„ฑ)
Ctrl + Alt + V: ๊ฐ™์€ ๋‚ด์šฉ์˜ ๋™์ผํ•œ ์ฝ”๋“œ ํ•œ ๋ถ€๋ถ„์„ ๋“œ๋ž˜๊ทธ ํ›„ ๋‹จ์ถ•ํ‚ค ์‹คํ–‰(=> 2๊ฐœ ์ด์ƒ์˜ ํ•ญ๋ชฉ์„ ๋ฐ”๊พธ๊ธฐ ์„ ํƒ, ๋ณ€์ˆ˜ ์ƒ์„ฑ)
Ctrl + Alt + C: " " ์•ˆ์˜ ๋ฌธ์ž์—ด์„ ๋“œ๋ž˜๊ทธ ํ›„ ๋‹จ์ถ•ํ‚ค ์‹คํ–‰(=> ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด String ๋ณ€์ˆ˜ ์ •์˜)

 

ํŒจํ‚ค์ง€ ๊ตฌ์„ฑ

 

์‹คํ–‰์‹œ 100% ์‹คํŒจ : 'PasswordValidator.class' ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํŒจ
/** * ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์ตœ์†Œ 8์ž ์ด์ƒ 12์ž ์ดํ•˜์—ฌ์•ผ ํ•œ๋‹ค. * ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ 8์ž ๋ฏธ๋งŒ ๋˜๋Š” 12์ž ์ดˆ๊ณผ์ธ ๊ฒฝ์šฐ IllegalArgumentException ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. * ๊ฒฝ๊ณ„์กฐ๊ฑด์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. */ public class PasswordValidatorTest { @DisplayName("๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ตœ์†Œ 8์ž ์ด์ƒ, 12์ž ์ดํ•˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.") @Test void validatePasswordTest() { assertThatCode(() -> PasswordValidator.validate("serverwizard")) .doesNotThrowAnyException(); } }

 

ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ ์ž‘์„ฑ: 'PasswordValidator.class' ์ƒ์„ฑ
ํ…Œ์ŠคํŠธ ํŒŒ์ผ์—์„œ ๋‹ค์‹œ ์‹คํ–‰ ํ›„ ์‹คํŒจ/ํ†ต๊ณผ ํ™•์ธ
public class PasswordValidator { public static void validate(String password) { if(password.length() < 8 || password.length() > 12) { throw new IllegalArgumentException("๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์ตœ์†Œ 8์ž ์ด์ƒ 12์ž ์ดํ•˜์—ฌ์•ผ ํ•œ๋‹ค."); } } }

 

์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜์— ์šฉ์ดํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ฆฌ๊ณ  ๊ฐ•์˜์—์„œ ๊ฐ•์กฐํ•˜๋Š” ์‹ฌ๋ฆฌ์  ์•ˆ์ •๊ฐ์„ ์ฃผ๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์žฌ์กฐ์ •ํ•œ๋‹ค.
public class PasswordValidator { public static final String WRONG_PASSWORD_LENGTH_EXCEPTION_MESSAGE = "๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์ตœ์†Œ 8์ž ์ด์ƒ 12์ž ์ดํ•˜์—ฌ์•ผ ํ•œ๋‹ค."; public static void validate(String password) { int length = password.length(); if(length < 8 || length > 12) { throw new IllegalArgumentException(WRONG_PASSWORD_LENGTH_EXCEPTION_MESSAGE); } } }

 

 

 

์ถœ์ฒ˜ | hyeonseok Ahn

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.