[[TableOfContents]] == TDD == === TDD를 하면서 ì–¸ì œ ìƒê°ì„ ë§Žì´ í•´ì•¼í•˜ëŠ”ì§€? === 테스트를 만들 때ì¸ê°€? í…ŒìŠ¤íŠ¸ì— ë§žê²Œ ë™ìž‘ì„ ìˆ˜í–‰í•˜ëŠ” 코드를 ìž‘ì„±í• ë•Œì¸ê°€? --[Leonardong] 사람마다 다를것 같긴 하지만, ë‚˜ì˜ ê²½ìš°ëŠ” 테스트를 작성하기 ì „ TODO List 를 ìž‘ì„±í• ë•Œ 가장 ê³ ë¯¼ì„ í•˜ê³ ì‹œê°„ì´ ì˜¤ëž˜ê±¸ë¦° 것 같다. ë˜ ë§Œë“¤ê²ƒì¸ì§€ì— 대한 ì´í•´ê°€ ì œëŒ€ë¡œ ë˜ì§€ ì•Šì€ ìƒíƒœì—서는 ë„대체 'ë˜ í•´ì•¼ í• ì§€, ì–´ë–¤ 결과를 기대해야 í• ì§€'를 모르기 때문. :) 한편, ë§Œì¼ TODO 리스트 작성시 ì‹œê°„ì´ ë„ˆë¬´ 지체ëœë‹¤ 싶으면 빨리 'ì–´ë–¤ 결과를 기대해야 하나(Test ë””ìžì¸)' ì´ëž€ ì§ˆë¬¸ì„ í•˜ê³ í…ŒìŠ¤íŠ¸ë¥¼ 작성해보는 ë°©ë²•ì„ ì¶”ì²œ. ì € ì§ˆë¬¸ì´ ì•žì—ì„œì˜ 'ë˜ í• ê¹Œ?'ë¼ëŠ” ì§ˆë¬¸ì˜ ëª¨í˜¸í•¨ì„ ë³´ì™„í•´ì£¼ê¸° 때문. ë¬´ì—‡ì„ í•´ì•¼ í• ì§€ ê°ì´ 안올때는 가장 간단한 Input-Output ì„ ì„œìˆ í•´ë´„ìœ¼ë¡œì„œ 조금씩 구체화시켜나갈 수 있ìŒ. 'ì˜ˆì œì— ì˜í•œ 구체화'란 ë°©ë²•ì€ ì°¸ ìœ ìš©í•¨. --[1002] {{| ...ì „ëžµ... 테스트를 ìž‘ì„±í• ë•Œì—” 'ì´ë¯¸ 완성ë˜ì–´ìžˆëŠ” 잘 ëœ API' 를 ìƒìƒí•˜ë©° 작성한다. 잘 만들어진 API는 ê°™ì€ ì¼ì„ 하ë”ë¼ë„ ì§ì ‘ 호출해줘야 하는 í•¨ìˆ˜ì˜ ê°¯ìˆ˜ê°€ ì ê³ ì´í•´í•˜ê¸° 편하며 '무엇'ì„ í•´ì£¼ëŠ”ì§€ ê·¸ 메소드가 ë§í•´ì¤€ë‹¤. ì 게 코드를 ì¨ë„ ë§Žì€ ì¼ì„ 해주는것ì´ë‹¤. ê·¸ë¦¬ê³ , 테스트로서 ì»´í“¨í„°ì˜ ì»´íŒŒì¼ëŸ¬ì—게 ì½”ë“œìž‘ì„±ì„ ìœ„í•´ 해야 í• ì¼ë“¤ì„ ë¬»ê³ , ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ë§Œë“¤ê³ . ê·¸ë¦¬ê³ êµ¬í˜„í•˜ê³ , 다시 êµ¬í˜„ëœ ì½”ë“œë¥¼ Refactoring 한다. ...후략... ''-[TestDrivenDevelopment]ì—서'' |}} === 간단한 C++ ì—ì„œì˜ TDD ì°¸ê³ í•¨ìˆ˜ === {{{~cpp int gNumTests = 0; int gNumFailures = 0; void Assert(bool condition) { ++gNumTests; if(!condition) { ++gNumFailures; } } #define Assert(cond) AssertImpl(cond, #cond, __LINE__, __FILE__) void AssertImpl( bool condition, const char* condStr, int lineNum, const char* fileName) { ++gNumTests; if(!condition) { ++gNumFailures; printf("file %s', line %d, assert '%s' failed\n", fileName, (int)lineNum, condStr); } } void printTestResult() { printf("%d tests run, %d tests failed\n", (int)gNumTests,(int)gNumFailures); } int main(int argc, char* argv[]) { Assert(1==2); printTestResult(); return 0; } }}} == ì°¸ê³ ìžë£Œ == * [http://xper.org/wiki//xp/TestDrivenDevelopment?action=fullsearch&value=TestDrivenDevelopment&literal=1 XPERì˜ TDD ê´€ë ¨ ìžë£Œë“¤] * [http://wiki.tdd.or.kr/wiki.py tdd.or.kr]