¡º½Ç¿ëÁÖÀÇ ÇÁ·Î±×·¡¸Ó¡»ÀÇ ¾Øµð ÇåÆ®¿Í µ¥À̺ê Å丶½º°¡ ¾Ë·ÁÁÖ´Â
½Ç¿ëÁÖÀÇ ´ÜÀ§ Å×½ºÆ®!
Ŭ¸° ÄÚµåÀÇ ÇÙ½ÉÀÎ ´ÜÀ§ Å×½ºÆ®, ¾îµð¼ ¾î¶»°Ô ½ÃÀÛÇØ¾ß ÇÒ±î? Ã¥¿¡¼´Â ´ÜÀ§ Å×½ºÆ®ÀÇ °³³ä°ú ÀÛ¼º ÀÌÀ¯ºÎÅÍ Å×½ºÆ® °¡À̵å¶óÀÎ, ¸ñ °´Ã¼ »ç¿ë¹ý, ÀÚµ¿ÈµÈ ´ÜÀ§ Å×½ºÆ®, ¸®ÆÑÅ丵±îÁö ´ÜÀ§ Å×½ºÆ®ÀÇ ÇÙ½É ³»¿ëÀ» ¼³¸íÇÑ´Ù. ¶ÇÇÑ, ÀÚ¹Ù¿Í JUnitÀ¸·Î ´ÜÀ§ Å×½ºÆ®¸¦ ´Ü°èº°·Î ½Ç½ÀÇÒ ¼ö ÀÖ°Ô ±¸¼ºÇß´Ù. ´ÜÀ§ Å×½ºÆ®°¡ óÀ½À̰ųª, ´ÜÀ§ Å×½ºÆ®¸¦ Á» ´õ ±í°Ô ÀÌÇØÇÏ°í ½ÍÀº ºÐµé¿¡°Ô ÃßõÇÑ´Ù.
°æ·Â 30³â ÀÌ»óÀÇ º£Å׶û ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÚ·Î ¼ÒÇÁÆ®¿þ¾î °³¹ß»Ó¸¸ ¾Æ´Ï¶ó °³¹ß °ü·Ã ÄÚÄ¡¸¦ °âÇÏ°í ÀÖ´Ù. Outpace Systems, Inc.¿¡¼ ÀÏÇß°í Áö±Ýµµ Langr Software Solutions, Inc.¿¡¼ °í°´À» µ½°í ÀÖ´Ù. ¡ºAgile in a Flash¡»(ÆÀ ¿ÀÆðŠ°øÀú) µîÀ» ÁýÇÊÇß´Ù.
1ºÎ ´ÜÀ§ Å×½ºÆ®ÀÇ ±âÃÊ
1Àå ù ¹ø° JUnit Å×½ºÆ® ¸¸µé±â
1.1 ´ÜÀ§ Å×½ºÆ®¸¦ ÀÛ¼ºÇÏ´Â ÀÌÀ¯
1.2 JUnitÀÇ ±âº»: ù ¹ø° Å×½ºÆ® Åë°ú
__1.2.1 ÇÁ·ÎÁ§Æ® ¼³Á¤
__1.2.2 JUnit Å×½ºÆ® Á» ´õ ÀÌÇØ
__1.2.3 JUnit ½ÇÇà
1.3 Å×½ºÆ® Áغñ, ½ÇÇà, ´Ü¾ð
1.4 Å×½ºÆ®°¡ Á¤¸»·Î ¹º°¡¸¦ Å×½ºÆ®Çϴ°¡?
1.5 ¸¶Ä¡¸ç
2Àå JUnit ÁøÂ¥·Î ½á º¸±â
2.1 Å×½ºÆ® ´ë»ó ÀÌÇØ: Profile Ŭ·¡½º
2.2 ¾î¶² Å×½ºÆ®¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´ÂÁö °áÁ¤
2.3 ´ÜÀÏ °æ·Î Ä¿¹ö
2.4 µÎ ¹ø° Å×½ºÆ® ¸¸µé±â
2.5 @Before ¸Þ¼µå·Î Å×½ºÆ® ÃʱâÈ
2.6 ÀÌÁ¦ ¾î¶²°¡?
2.7 ¸¶Ä¡¸ç
3Àå JUnit ´Ü¾ð ±í°Ô Æıâ
3.1 JUnit ´Ü¾ð
__3.1.1 assertTrue
__3.1.2 assertThatÀº ¸íÈ®ÇÑ °ªÀ» ºñ±³
__3.1.3 Áß¿äÇÑ ÇÜÅ©·¹½ºÆ® ¸Åó »ìÆ캸±â
__3.1.4 ºÎµ¿¼Ò¼öÁ¡ ¼ö¸¦ µÎ °³ ºñ±³
__3.1.5 ´Ü¾ð ¼³¸í
3.2 ¿¹¿Ü¸¦ ±â´ëÇÏ´Â ¼¼ °¡Áö ¹æ¹ý
__3.2.1 ´Ü¼øÇÑ ¹æ½Ä: ¾Ö³ÊÅ×ÀÌ¼Ç »ç¿ë
__3.2.2 ¿¾ ¹æ½Ä: try/catch¿Í fail
__3.2.3 »õ·Î¿î ¹æ½Ä: ExpectedException ±ÔÄ¢
__3.2.4 ¿¹¿Ü ¹«½Ã
3.3 ¸¶Ä¡¸ç
4Àå Å×½ºÆ® Á¶Á÷
4.1 AAA·Î Å×½ºÆ® ÀÏ°ü¼º À¯Áö
4.2 µ¿ÀÛ Å×½ºÆ® vs ¸Þ¼µå Å×½ºÆ®
4.3 Å×½ºÆ®¿Í ÇÁ·Î´ö¼Ç ÄÚµåÀÇ °ü°è
__4.3.1 Å×½ºÆ®¿Í ÇÁ·Î´ö¼Ç ÄÚµå ºÐ¸®
__4.3.2 ³»ºÎ µ¥ÀÌÅÍ ³ëÃâ vs ³»ºÎ µ¿ÀÛ ³ëÃâ
4.4 ÁýÁßÀûÀÎ ´ÜÀÏ ¸ñÀû Å×½ºÆ®ÀÇ °¡Ä¡
4.5 ¹®¼·Î¼ÀÇ Å×½ºÆ®
__4.5.1 ÀÏ°ü¼º ÀÖ´Â À̸§À¸·Î Å×½ºÆ® ¹®¼È
__4.5.2 Å×½ºÆ®¸¦ ÀÇ¹Ì ÀÖ°Ô ¸¸µé±â
4.6 @Before¿Í @After (°øÅë ÃʱâÈ¿Í Á¤¸®) ´õ ¾Ë±â
__4.6.1 BeforeClass¿Í AfterClass ¾Ö³ÊÅ×À̼Ç
4.7 ³ì»öÀÌ ÁÁ´Ù: Å×½ºÆ®¸¦ ÀÇ¹Ì ÀÖ°Ô À¯Áö
__4.7.1 Å×½ºÆ®¸¦ ºü¸£°Ô
__4.7.2 Å×½ºÆ® Á¦¿Ü
4.8 ¸¶Ä¡¸ç
2ºÎ ºü¸¥ ¾Ï±â¹ý ½Àµæ
5Àå ÁÁÀº Å×½ºÆ®ÀÇ FIRST ¼Ó¼º
5.1 FIRST: ÁÁÀº Å×½ºÆ® Á¶°Ç
5.2 [F]IRST: ºü¸£´Ù
5.3 F[I]RST: °í¸³½ÃŲ´Ù
5.4 FI[R]ST: ÁÁÀº Å×½ºÆ®´Â ¹Ýº¹ °¡´ÉÇØ¾ß ÇÑ´Ù
5.5 FIR[S]T: ½º½º·Î °ËÁõ °¡´ÉÇÏ´Ù
5.6 FIRS[T]: Àû½Ã¿¡ »ç¿ëÇÑ´Ù
5.7 ¸¶Ä¡¸ç
6Àå Right-BICEP: ¹«¾ùÀ» Å×½ºÆ®ÇÒ °ÍÀΰ¡?
6.1 [Right]-BICEP: °á°ú°¡ ¿Ã¹Ù¸¥°¡?
6.2 Right-[B]ICEP: °æ°è Á¶°ÇÀº ¸Â´Â°¡?
6.3 °æ°è Á¶°Ç¿¡¼´Â CORRECT¸¦ ±â¾ïÇ϶ó
6.4 Right-B[I]CEP: ¿ª °ü°è¸¦ °Ë»çÇÒ ¼ö Àִ°¡?
6.5 Right-BI[C]EP: ´Ù¸¥ ¼ö´ÜÀ» È°¿ëÇÏ¿© ±³Â÷ °Ë»çÇÒ ¼ö Àִ°¡?
6.6 Right-BIC[E]P: ¿À·ù Á¶°ÇÀ» °Á¦·Î ÀϾ°Ô ÇÒ ¼ö Àִ°¡?
6.7 Right-BICE[P]: ¼º´É Á¶°ÇÀº ±âÁØ¿¡ ºÎÇÕÇϴ°¡?
6.8 ¸¶Ä¡¸ç
7Àå °æ°è Á¶°Ç: CORRECT ±â¾ï¹ý
7.1 [C]ORRECT: [C]onformance(Áؼö)
7.2 C[O]RRECT: [O]rdering(¼ø¼)
7.3 CO[R]RECT: [R]ange(¹üÀ§)
__7.3.1 ºÒº¯¼ºÀ» °Ë»çÇÏ´Â »ç¿ëÀÚ Á¤ÀÇ ¸Åó »ý¼º
__7.3.2 ºÒº¯ ¸Þ¼µå¸¦ ³»ÀåÇÏ¿© ¹üÀ§ Å×½ºÆ®
7.4 COR[R]ECT: [R]eference(ÂüÁ¶)
7.5 CORR[E]CT: [E]xistence(Á¸Àç)
7.6 CORRE[C]T: [C]ardinality(񃬔)
7.7 CORREC[T]: [T]ime(½Ã°£)
7.8 ¸¶Ä¡¸ç
3ºÎ ´õ Å« ¼³°è ±×¸²
8Àå ±ò²ûÇÑ ÄÚµå·Î ¸®ÆÑÅ丵Çϱâ
8.1 ÀÛÀº ¸®ÆÑÅ丵
__8.1.1 ¸®ÆÑÅ丵ÀÇ ±âȸ
__8.1.2 ¸Þ¼µå ÃßÃâ: µÎ ¹ø°·Î Áß¿äÇÑ ¸®ÆÑÅ丵 Ä£±¸
8.2 ¸Þ¼µå¸¦ À§ÇÑ ´õ ÁÁÀº Áý ã±â
8.3 ÀÚµ¿ ¹× ¼öµ¿ ¸®ÆÑÅ丵
8.4 °úÇÑ ¸®ÆÑÅ丵?
__8.4.1 º¸»ó: ¸íÈ®ÇÏ°í Å×½ºÆ® °¡´ÉÇÑ ´ÜÀ§µé
__8.4.2 ¼º´É ¿°·Á: ±×·¯Áö ¾Ê¾Æµµ µÈ´Ù
8.5 ¸¶Ä¡¸ç
9Àå ´õ Å« ¼³°è ¹®Á¦
9.1 Profile Ŭ·¡½º¿Í SRP
9.2 »õ·Î¿î Ŭ·¡½º ÃßÃâ
9.3 ¸í·É-ÁúÀÇ ºÐ¸®
9.4 ´ÜÀ§ Å×½ºÆ®ÀÇ À¯Áö º¸¼ö ºñ¿ë
__9.4.1 ÀÚ½ÅÀ» º¸È£ÇÏ´Â ¹æ¹ý
__9.4.2 ±úÁø Å×½ºÆ® °íÄ¡±â
9.5 ´Ù¸¥ ¼³°è¿¡ °üÇÑ »ý°¢µé
9.6 ¸¶Ä¡¸ç
10Àå ¸ñ °´Ã¼ »ç¿ë
10.1 Å×½ºÆ® µµÀü °úÁ¦
10.2 ¹ø°Å·Î¿î µ¿ÀÛÀ» ½ºÅÓÀ¸·Î ´ëü
10.3 Å×½ºÆ®¸¦ Áö¿øÇϱâ À§ÇÑ ¼³°è º¯°æ
10.4 ½ºÅÓ¿¡ Áö´É ´õÇϱâ: ÀÎÀÚ °ËÁõ
10.5 ¸ñ µµ±¸¸¦ »ç¿ëÇÏ¿© Å×½ºÆ® ´Ü¼øÈ
10.6 ¸¶Áö¸· ÇϳªÀÇ ´Ü¼øÈ: ÁÖÀÔ µµ±¸ ¼Ò°³
10.7 ¸ñÀ» ¿Ã¹Ù¸£°Ô »ç¿ëÇÒ ¶§ Áß¿äÇÑ °Í
10.8 ¸¶Ä¡¸ç
11Àå Å×½ºÆ® ¸®ÆÑÅ丵
11.1 ÀÌÇØ °Ë»ö
11.2 Å×½ºÆ® ³¿»õ: ºÒÇÊ¿äÇÑ Å×½ºÆ® ÄÚµå
11.3 Å×½ºÆ® ³¿»õ: Ãß»óÈ ´©¶ô
11.4 Å×½ºÆ® ³¿»õ: ºÎÀûÀýÇÑ Á¤º¸
11.5 Å×½ºÆ® ³¿»õ: ºÎǬ »ý¼º
11.6 Å×½ºÆ® ³¿»õ: ´Ù¼öÀÇ ´Ü¾ð
11.7 Å×½ºÆ® ³¿»õ: Å×½ºÆ®¿Í ¹«°üÇÑ ¼¼ºÎ »çÇ×µé
11.8 Å×½ºÆ® ³¿»õ: À߸øµÈ Á¶Á÷
11.9 Å×½ºÆ® ³¿»õ: ¾Ï½ÃÀû ÀǹÌ
11.10 »õ·Î¿î Å×½ºÆ® Ãß°¡
11.11 ¸¶Ä¡¸ç
4ºÎ ´õ Å« ´ÜÀ§ Å×½ºÆ® ±×¸²
12Àå Å×½ºÆ® ÁÖµµ °³¹ß
12.1 TDDÀÇ ÁÖµÈ ÀÌÀÍ
12.2 ´Ü¼øÇÏ°Ô ½ÃÀÛ
12.3 ¶Ç ´Ù¸¥ ÁõºÐ Ãß°¡
12.4 Å×½ºÆ® Á¤¸®
12.5 ¶Ç ´Ù¸¥ ÀÛÀº ÁõºÐ
12.6 ´Ù¼öÀÇ ÀÀ´ä Áö¿ø: ÀÛÀº ¼³°è ¿ìȸ·Î
12.7 ÀÎÅÍÆäÀ̽º È®Àå
12.8 ¸¶Áö¸· Å×½ºÆ®µé
12.9 ¹®¼·Î¼ÀÇ Å×½ºÆ®
12.10 TDDÀÇ ¸®µë
12.11 ¸¶Ä¡¸ç
13Àå ±î´Ù·Î¿î Å×½ºÆ®
13.1 ¸ÖƼ½º·¹µå ÄÚµå Å×½ºÆ®
__13.1.1 ´Ü¼øÇÏ°í ¶È¶ÈÇÏ°Ô À¯Áö
__13.1.2 ¸ðµç ¸ÅĪ ã±â
__13.1.3 ¾ÖÇø®ÄÉÀÌ¼Ç ·ÎÁ÷ ÃßÃâ
__13.1.4 ½º·¹µå ·ÎÁ÷ÀÇ Å×½ºÆ® Áö¿øÀ» À§ÇØ Àç¼³°è
__13.1.5 ½º·¹µå ·ÎÁ÷À» À§ÇÑ Å×½ºÆ® ÀÛ¼º
13.2 µ¥ÀÌÅͺ£À̽º Å×½ºÆ®
__13.2.1 °í¸¶¿ö, Controller
__13.2.2 µ¥ÀÌÅÍ ¹®Á¦
__13.2.3 Ŭ¸° ·ë µ¥ÀÌÅͺ£À̽º Å×½ºÆ®
__13.2.4 controller¸¦ ¸ñ ó¸®
13.3 ¸¶Ä¡¸ç
14Àå ÇÁ·ÎÁ§Æ®¿¡¼ Å×½ºÆ®
14.1 ºü¸¥ µµÀÔ
14.2 ÆÀ°ú °°Àº Æí µÇ±â
__14.2.1 ´ÜÀ§ Å×½ºÆ® Ç¥ÁØ ¸¸µé±â
__14.2.2 ¸®ºä·Î Ç¥ÁØ Áؼö ³ôÀ̱â
__14.2.3 ¦ ÇÁ·Î±×·¡¹ÖÀ» ÀÌ¿ëÇÑ ¸®ºä
14.3 Áö¼ÓÀû ÅëÇÕÀ¸·Î ¼ö·Å
14.4 ÄÚµå Ä¿¹ö¸®Áö
__14.4.1 Ä¿¹ö¸®Áö´Â ¾î´À Á¤µµ¿©¾ß Çϴ°¡?
__14.4.2 100% Ä¿¹ö¸®Áö´Â ÁøÂ¥ ÁÁÀº°¡?
__14.4.3 ÄÚµå Ä¿¹ö¸®ÁöÀÇ °¡Ä¡
14.5 ¸¶Ä¡¸ç
ºÎ·Ï A ÀÎÅÚ¸®Á¦ÀÌ IDEA¿Í ³ÝºóÁî¿¡¼ JUnit ¼³Á¤
A.1 ÀÎÅÚ¸®Á¦ÀÌ IDEA
A.2 ³ÝºóÁî