Ã÷»ÔÕ¾/¼¼Êõ¿ª·¢/ÄÚÈÝ

JUnitʵʩ--7,8

¼¼Êõ¿ª·¢2023-08-02 ÔĶÁ
[ÕªÒª]7.JUnit×î¼Ñʵ¼ù Martin Fowler£¨ÓÖÊÇÕâλ¸ßÈË£©Ëµ¹ý£º¡°µ±ÄãÊÔͼ´òÓ¡Êä³öһЩÐÅÏ¢»òµ÷ÊÔÒ»¸ö±í´ïʽʱ£¬Ð´Ò»Ð©²âÊÔ´úÂëÀ´Ìæ´úÄÇЩ´«Í³µÄ·½·¨¡£¡±Ò»¿ªÊ¼£¬Äã»á·¢ÏÖÄã×ÜÊÇÒª´´½¨Ò»Ð©ÐµÄFixture£¬¶øÇÒ²âÊÔËƺõʹÄãµÄ±à³ÌËÙ¶ÈÂýÁËÏÂÀ´¡£È»¶ø²»¾ÃÖ®ºó£¬Äã»á·¢ÏÖÄãÖظ´Ê¹ÓÃÏàͬµÄFixture£¬...
7.JUnit×î¼Ñʵ¼ù

Martin Fowler£¨ÓÖÊÇÕâλ¸ßÈË£©Ëµ¹ý£º¡°µ±ÄãÊÔͼ´òÓ¡Êä³öһЩÐÅÏ¢»òµ÷ÊÔÒ»¸ö±í´ïʽʱ£¬Ð´Ò»Ð©²âÊÔ´úÂëÀ´Ìæ´úÄÇЩ´«Í³µÄ·½·¨¡£¡±Ò»¿ªÊ¼£¬Äã»á·¢ÏÖÄã×ÜÊÇÒª´´½¨Ò»Ð©ÐµÄFixture£¬¶øÇÒ²âÊÔËƺõʹÄãµÄ±à³ÌËÙ¶ÈÂýÁËÏÂÀ´¡£È»¶ø²»¾ÃÖ®ºó£¬Äã»á·¢ÏÖÄãÖظ´Ê¹ÓÃÏàͬµÄFixture£¬¶øÇÒеIJâÊÔͨ³£Ö»Éæ¼°Ìí¼ÓÒ»¸öеIJâÊÔ·½·¨¡£

Äã¿ÉÄÜ»áдÐí¶à²âÊÔ´úÂ룬µ«ÄãºÜ¿ì¾Í»á·¢ÏÖÄãÉèÏë³öµÄ²âÊÔÖ»ÓÐһС²¿·ÖÊÇÕæÕýÓÐÓõġ£ÄãËùÐèÒªµÄ²âÊÔÊÇÄÇЩ»áʧ°ÜµÄ²âÊÔ£¬¼´ÄÇЩÄãÈÏΪ²»»áʧ°ÜµÄ²âÊÔ£¬»òÄãÈÏΪӦ¸Ãʧ°ÜÈ´³É¹¦µÄ²âÊÔ¡£

ÎÒÃÇÇ°ÃæÌáµ½¹ý²âÊÔÊÇÒ»¸ö²»»áÖжϵĹý³Ì¡£Ò»µ©ÄãÓÐÁËÒ»¸ö²âÊÔ£¬Äã¾ÍҪһֱȷ±£ÆäÕý³£¹¤×÷£¬ÒÔ¼ìÑéÄãËù¼ÓÈëµÄÐµĹ¤×÷´úÂë¡£²»ÒªÃ¿¸ô¼¸Ìì»ò×îºó²ÅÔËÐвâÊÔ£¬Ã¿ÌìÄ㶼Ӧ¸ÃÔËÐÐһϲâÊÔ´úÂë¡£ÕâÖÖͶ×ʺÜС£¬µ«¿ÉÒÔÈ·±£ÄãµÃµ½¿ÉÒÔÐÅÀµµÄ¹¤×÷´úÂë¡£ÄãµÄ·µ¹¤ÂʽµµÍÁË£¬Äã»áÓиü¶àµÄʱ¼ä±àд¹¤×÷´úÂë¡£

²»ÒªÈÏΪѹÁ¦´ó£¬¾Í²»Ð´²âÊÔ´úÂë¡£Ïà·´±àд²âÊÔ´úÂë»áʹÄãµÄѹÁ¦Öð½¥¼õÇᣬӦΪͨ¹ý±àд²âÊÔ´úÂ룬Äã¶ÔÀàµÄÐÐΪÓÐÁËÈ·ÇеÄÈÏʶ¡£Äã»á¸ü¿ìµØ±àд³öÓÐЧÂʵع¤×÷´úÂë¡£ÏÂÃæÊÇһЩ¾ßÌåµÄ±àд²âÊÔ´úÂëµÄ¼¼ÇÉ»ò½ÏºÃµÄʵ¼ù·½·¨£º

1. ²»ÒªÓÃTestCaseµÄ¹¹Ô캯Êý³õʼ»¯Fixture£¬¶øÒªÓÃsetUp()ºÍtearDown()·½·¨¡£
2. ²»ÒªÒÀÀµ»ò¼Ù¶¨²âÊÔÔËÐеÄ˳Ðò£¬ÒòΪJUnitÀûÓÃVector±£´æ²âÊÔ·½·¨¡£ËùÒÔ²»Í¬µÄƽ̨»á°´²»Í¬µÄ˳Ðò´ÓVectorÖÐÈ¡³ö²âÊÔ·½·¨¡£
3. ±ÜÃâ±àдÓи±×÷ÓõÄTestCase¡£ÀýÈ磺Èç¹ûËæºóµÄ²âÊÔÒÀÀµÓÚijЩÌض¨µÄ½»Ò×Êý¾Ý£¬¾Í²»ÒªÌá½»½»Ò×Êý¾Ý¡£¼òµ¥µÄ»á¹ö¾Í¿ÉÒÔÁË¡£
4. µ±¼Ì³ÐÒ»¸ö²âÊÔÀàʱ£¬¼ÇµÃµ÷Óø¸ÀàµÄsetUp()ºÍtearDown()·½·¨¡£
5. ½«²âÊÔ´úÂëºÍ¹¤×÷´úÂë·ÅÔÚÒ»Æð£¬Ò»±ßͬ²½±àÒëºÍ¸üС££¨Ê¹ÓÃAntÖÐÓÐÖ§³ÖjunitµÄtask.£©
6. ²âÊÔÀàºÍ²âÊÔ·½·¨Ó¦¸ÃÓÐÒ»ÖµÄÃüÃû·½°¸¡£ÈçÔÚ¹¤×÷ÀàÃûÇ°¼ÓÉÏtest´Ó¶øÐγɲâÊÔÀàÃû¡£
7. È·±£²âÊÔÓëʱ¼äÎ޹أ¬²»ÒªÒÀÀµÊ¹ÓùýÆÚµÄÊý¾Ý½øÐвâÊÔ¡£µ¼ÖÂÔÚËæºóµÄά»¤¹ý³ÌÖкÜÄÑÖØÏÖ²âÊÔ¡£
8. Èç¹ûÄã±àдµÄÈí¼þÃæÏò¹ú¼ÊÊг¡£¬±àд²âÊÔʱҪ¿¼Âǹú¼Ê»¯µÄÒòËØ¡£²»Òª½öÓÃĸÓïµÄLocale½øÐвâÊÔ¡£
9. ¾¡¿ÉÄܵØÀûÓÃJUnitÌṩµØassert/fail·½·¨ÒÔ¼°Òì³£´¦ÀíµÄ·½·¨£¬¿ÉÒÔʹ´úÂë¸üΪ¼ò½à¡£
10.²âÊÔÒª¾¡¿ÉÄܵØС£¬Ö´ÐÐËٶȿ졣

ÊÂʵÉÏ£¬JUnit»¹¿ÉÓÃÓÚ¼¯³É²âÊÔ£¬µ«ÎÒ²¢Ã»Éæ¼°µ½£¬Ô­ÒòÓÐÁ½¸ö£ºÒ»ÊÇÒòΪûÓе¥Ôª²âÊÔ£¬¼¯³É²âÊÔÎÞ´Ó̸Æð¡£ÎÒÃǽÓÊܲâÊԵظÅÄîÒѾ­ºÜ²»ÈÝÒ×ÁË£¬Èç¹ûÔÙÒýÈ뼯³É²âÊԾͻá¸üÀ§ÄÑ¡£¶þÊÇÎұȽÏÀÁ£¬Ï£Íû½«¼¯³É²âÊÔµÄÈÎÎñ½»¸ø²âÊÔÈËԱȥ×ö¡£ÔÚJUnitµÄÍøÕ¾ÉÏÓÐһЩÏà¹ØµÄÎÄÕ£¬Óпմó¼Ò¿ÉÒÔ·­Ò»·­¡£


8.JUnitÓëJ2EE

Èç¹û´ó¼Ò×Ðϸ¿¼ÂÇһϵĻ°£¬¾Í»á·¢ÏÖ£¬JUnitÓÐ×Ô¼ºµÄ¾ÖÏÞÐÔ£¬±ÈÈç¶ÔͼÐνçÃæµÄ²âÊÔ£¬¶Ôservlet/JSPÒÔ¼°EJBµÄ²âÊÔÎÒÃǶ¼Ã»ÓоÙÏà¹ØµÄÀý×Ó¡£Êµ¼ÊÉÏ£¬JUnit¶ÔÓÚGUI½çÃ棬servlet/JSP£¬JavaBeanÒÔ¼°EJB¶¼Óа취²âÊÔ¡£¹ØÓÚGUIµÄ²âÊԱȽϸ´ÔÓ£¬ÊʺÏÓÃÒ»ÕûƪÎÄÕÂÀ´½éÉÜ¡£ÕâÀï¾Í²»¶à˵ÁË¡£

Ç°ÃæÎÒÃÇËù×öµÄ²âÊÔʵ¼ÊÉÏÓÐÒ»¸öÒþº¬µÄ»·¾³£¬JVMÎÒÃǵÄÀàÐèÒªÕâ¸öJVMÀ´Ö´ÐС£¶øÔÚJ2EE¿ò¼ÜÖУ¬servlet/JSP£¬EJB¶¼ÒªÇóÓÐ×Ô¼ºµÄÔËÐл·¾³£ºWeb ContainerºÍEJB Container¡£ËùÒÔ£¬ÒªÏë¶Ôservlet/JSP£¬EJB½øÐвâÊÔ¾ÍÐèÒª½«Æ䲿ÊðÔÚÏàÓ¦µÄContainerÖвÅÄܽøÐвâÊÔ¡£ÓÉÓÚEJB²»Éæ¼°UIµÄÎÊÌ⣨³ý·ÇEJB²Ù×÷XMLÊý¾Ý£¬´ËʱµÄ²âÊÔ´úÂë±È½ÏÄÑд£¬ÓпÉÄÜÐèÒªÄã±È½ÏÁ½¿ÃDOMÊ÷ÊÇ·ñº¬ÓÐÏàͬµÄÄÚÈÝ£©Ö»Òª²¿ÊðÉÏÈ¥Ö®ºó¾Í¿ÉÒÔÔËÐвâÊÔ´úÂëÁË¡£´ËʱsetUp()·½·¨ÏÔµÃÌرðÓÐÓã¬Äã¿ÉÒÔÔÚsetUp()·½·¨ÖÐÀûÓÃJNDI²éÕÒÌض¨µÄEJB¡£¶øÔÚtestXXX()·½·¨Öе÷Óò¢²âÊÔÕâЩEJBµÄ·½·¨¡£

ÕâÀïËùÖ¸µÄJavaBeanͬÑùûÓÐUIµÄÎÊÌ⣬±ÈÈ磬ÎÒÃÇÓÃJavaBeanÀ´·ÃÎÊÊý¾Ý¿â£¬»òÓÃJavaBeanÀ´°ü¹üEJB¡£Èç¹ûÕâÀàJavaBeanûÓÐÓõ½ContainerµÄÌṩµÄ·þÎñ£¬Ôò¿ÉÖ±½Ó½øÐвâÊÔ£¬Í¬ÎÒÃÇÇ°ÃæËù˵µÄÒ»°ãµÄÀàµÄ²âÊÔ·½·¨Ò»Ñù¡£Èç¹ûÕâÀàJavaBeanÓõ½ÁËContainerµÄÌṩµÄ·þÎñ£¬ÔòÐèÒª½«Æ䲿ÊðÔÚContainerÖвÅÄܽøÐвâÊÔ¡£·½·¨ÓëEJBÀàËÆ¡£

¶ÔÓÚservlet/JSPµÄ²âÊÔÔò±È½Ï¼¬ÊÖ£¬ÓÐÈ˽¨ÒéÔÚ²âÊÔ´úÂëÖй¹ÔìHttpRequestºÍHttpResponse£¬È»ºó½øÐбȽϣ¬Õâ¾ÍÒªÇ󿪷¢ÈËÔ±¶ÔHTTPЭÒéÒÔ¼°servlet/JSPµÄÄÚ²¿ÊµÏÖÓбȽÏÉîµÄÈÏʶ¡£ÎÒÈÏΪÕâÕв»Ì«ÏÖʵ¡£Ò²ÓÐÈËÌá³öʹÓÃHttpUnit¡£ÓÉÓÚÎÒ¶ÔCactusºÍHttpUnit Á˽ⲻ¶à£¬ËùÒÔÎÞ·¨×ö³öºÏÊʵĽ¨Ò顣ϣÍû¸÷λÏÈÖªÃÇÄܲ»ÁߴͽÌ(ericwq@263.net)¡£

ÕýÊÇÓÉÓÚJUnitµÄ¿ª·ÅÐԺͼòµ¥Ò×ÐУ¬²Å»áÒý³öÕâƪ½éÉÜÎÄÕ¡£µ«¼¼Êõ×ÜÔÚ²»¶ÏµØ¸üУ¬¶øÇÒÎÒ¶Ô²âÊÔ²¢Ã»Óзdz£ÉîÈëµÄÀí½â£»ÎÒ¿ÉÒÔ½«Ò»¸ö¸´ÔӵĸÅÄî¼ò»¯³ÉÒ»¾ä·Ç³£ÈÝÒ×Àí½âµÄ»°¡£µ«Îҵı¾ÒâÖ»ÊÇÏ£ÍûÄܽµµÍ¿ª·¢ÈËÔ±²½Èë²âÊÔÁìÓòµÄÃż÷£¬¶ø²»ÊÇÒªÐ޸ĻòÖØж¨ÒåһЩ¸ÅÄî¡£ÕâÒ»µãÊÇÌرðҪǿµ÷µÄ¡£×îºó£¬Èç¹ûÓÐЩÐֵܽãÃÃÄܸøÎÒ(ericwq@263.net)Ö¸³öһЩעÒâÊÂÏî»òÎÒ¶ÔijЩÎÊÌâµÄÀí½âÓÐÎó£¬ÎÒ»á·Ç³£¸Ð¼¤µÄ¡£

2001Ä궬Ó꣨°¦£¬ÒѾ­ÏÂÁË10¼¸ÌìµÄÓêÁË£©ÉϺ£

……

Ïà¹ØÔĶÁ