±à¼ÍƼö: |
±¾Æª·Ö±ð´Ó΢·þÎñ¼Ü¹¹Ï¿ªÕ¹µ¥Ôª²âÊÔµÄÒâÒå¡¢¶Ôµ¥Ôª²âÊԵij£¼ûÎó½âÒÔ¼°ÈçºÎ¿ªÕ¹µ¥Ôª²âÊÔÈý¸ö·½Ãæ½øÐнéÉÜÏ£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚÖªºõ £¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
ÔÚ΢·þÎñ¼Ü¹¹Ï¸߸²¸ÇÂʵĵ¥Ôª²âÊÔÊDZ£ÕÏ´úÂëÖÊÁ¿µÄµÚÒ»µÀÒ²ÊÇ×îÖØÒªµÄ¹Ø¿Ú£¬Ó¦¸Ã³ÖÖ®ÒԺ㡣
±³¾°
µ¥Ôª²âÊÔΪ´úÂëÖÊÁ¿±£¼Ý»¤º½£¬ÊÇÌá¸ßÒµÎñÖÊÁ¿µÄ×îÖ±½ÓÊֶΣ¬Êµ¼ùÖ¤Ã÷£¬·Ç³£¶àµÄȱÏÝÍêÈ«¿ÉÒÔͨ¹ýµ¥Ôª²âÊÔÀ´·¢ÏÖ£¬²âÊÔ½ð×ÖËþÌá³öÕßMartin
Fowler Ç¿µ÷Èç¹ûÒ»¸ö¸ß²ã²âÊÔʧ°ÜÁË£¬²»½ö½ö±íÃ÷¹¦ÄÜ´úÂëÖдæÔÚbug£¬»¹Òâζ×ŵ¥Ôª²âÊÔµÄǷȱ¡£Òò´Ë£¬ÎÞÂÛºÎʱÐÞ¸´Ê§°ÜµÄ¶Ëµ½¶Ë²âÊÔ£¬¶¼Ó¦¸ÃͬʱÌí¼ÓÏàÓ¦µÄµ¥Ôª²âÊÔ¡£
¶øÔ½Ôç·¢ÏÖ·¢ÏÖBug£¬Ôì³ÉµÄÀ˷ѾͻáԽС£¬µ¥Ôª²âÊÔ±¾Éí¾ÍÄܹ»ÌṩÁË¿ìËÙ·´À¡µÄ»úÖÆ¡£ÁíÍ⣬µ¥Ôª²âÊÔÊÇÒ»¸öÓÅÐãµÄ¿ª·¢¹¤³Ìʦ±Ø±¸¼¼ÄÜÖ®Ò»£¬ÓÅÐãµÄµ¥Ôª²âÊÔÊÇÒµÎñ¿ìËÙͶ²úµÄ¼ÓËÙÆ÷¡£
µ¥Ôª²âÊÔµÄÒâÒå
ËäÈ»¶ÔÓÚ100%µÄµ¥Ôª²âÊÔ¸²¸ÇÂÊÎÒÃdzÖÓб£Áô̬¶È£¬µ«ÔÚÒ»¸ö΢·þÎñ¼Ü¹¹»ù´¡ÉèÊ©»¹²»ÍêÉÆ¡¢¿ª·¢ÈËÔ±ÄÜÁ¦²Î²î²»Æë¡¢DDD£¨ÁìÓòÇý¶¯Éè¼Æ£©ÄÜÁ¦²»×ãÒÔÓ¦¶Ô¸´ÔÓÒµÎñµÄÇé¿öÏ£¬µ¥Ôª²âÊÔÊÇÐÔ¼Û±È×î¸ßµÄʵ¼ù¡£µ¥Ôª²âÊÔ¿ÉÒԳ䵱һ¸öÉè¼Æ¹¤¾ß£¬ËüÓÐÖúÓÚ¿ª·¢ÈËԱȥ˼¿¼´úÂë½á¹¹µÄÉè¼Æ£¬ÈôúÂë¸ü¼ÓÓÐÀûÓÚ²âÊÔ£¬Âú×ã¼Ü¹¹µÄ¿É²âÐÔÉè¼ÆÒªÇó¡£
µ¥Ôª²âÊÔµÄÒâÒå°üÀ¨ÈçÏÂÄÚÈÝ£º
¾¡Ôç·¢ÏÖȱÏÝ£¬½µµÍ¿ª·¢Í¶Èë³É±¾
85%µÄȱÏÝÊÇ´úÂë½×¶Î²úÉúµÄ£¬µ¥Ôª²âÊԽ׶οÉÒÔ·¢ÏÖ¾ø´ó²¿·ÖÈí¼þȱÏÝ¡£Í¬Ê±Èí¼þ²úÆ·µÄȱÏÝ·¢ÏÖµÄÔ½ÔçÍùÍù»á´ó´óµÄ½µµÍÆä¿ª·¢µÄͶÈë³É±¾£¬ÆäȱÏݵķ¢ÏÖʱ¼äÓëÐÞ¸´È±Ïݵijɱ¾ÈçÏÂͼÖкìÉ«ÇúÏß¡£ºìÉ«ÇúÏß±íÃ÷Ëæ×ÅÈí¼þ¿ª·¢µÄ½øÐУ¬Â©¶´Ô½Ôç·¢ÏÖ£¬ÆäÐÞ¸´µÄ³É±¾Ô½µÍ£¬²¢ÇÒÆäÐÞ¸´³É±¾Ó뿪·¢½ø¶ÈµÄÉÏÉýÇ÷ÊÆÔ½ÔÚºóÆÚÔ½½Ó½üÓÚÖ¸ÊýÉÏÉý¡£

·ÅÐÄÖØ¹¹
ÎÞÂÛÊǶԵ¥ÌåÏîÄ¿»¹Êǵ¥ÌåÏîÄ¿Ïò΢·þÎñ¼Ü¹¹Ç¨ÒÆ£¬´úÂë¶¼ÔÚ²»¶ÏµÄÔڱ仯ºÍÖØ¹¹£¬Í¨¹ýµ¥Ôª²âÊÔ£¬¿ª·¢¿ÉÒÔ·ÅÐĵÄÐÞ¸ÄÖØ¹¹´úÂ룬¼õÉٸĴúÂëʱÐÄÀí¸ºµ££¬Ìá¸ßÖØ¹¹µÄ³É¹¦ÂÊ¡£
¸Ä½øÉè¼Æ
Ô½ÊÇÁ¼ºÃÉè¼ÆµÄ´úÂ룬ԽÈÝÒ×±àдµ¥Ôª²âÊÔ£¬¶à¸öСµÄ·½·¨µÄµ¥²âÒ»°ã±È´ó·½·¨£¨³É°ÙÉÏǧÐдúÂ룩µÄµ¥²â´úÂëÒª¼òµ¥¡¢ÒªÎȶ¨£¬Ò»¸öÒÀÀµ½Ó¿ÚµÄÀàÒ»°ã±ÈÒÀÀµ¾ßÌåʵÏÖµÄÀàÈÝÒײâÊÔ£¬ËùÒÔÔÚ±àдµ¥²âµÄ¹ý³ÌÖУ¬Èç¹û·¢ÏÖµ¥²â´úÂë·Ç³£ÄÑд£¬Ò»°ã±íÃ÷±»²âÊԵĴúÂë°üº¬ÁËÌ«¶àµÄÒÀÀµ»òÖ°Ôð£¬ÐèÒª·´Ë¼´úÂëµÄºÏÀíÐÔ£¬½ø¶øÍƽø´úÂëÉè¼ÆµÄÓÅ»¯£¬ÐγÉÕýÏòÑ»·¡£
Ñ¡Ôñ²âÊÔÇý¶¯¿ª·¢£¨TDD£©µÄģʽ½øÐÐÏîÄ¿¿ª·¢£¬ÒÔµ¥Ôª²âÊÔÒýµ¼ÏîĿʵÏÖ¡£ÕâÖÖģʽϵ¥Ôª²âÊÔÏÈÐУ¬¸ù¾Ýµ¥Ôª²âÊÔ´úÂ뿪·¢¹¦ÄÜ´úÂ룬½ø¶ø·Ç³£¾«×¼µÄʵÏÖÒµÎñÐèÇ󣬼õÉÙ·µ¹¤ºÍȱÏÝÂÊ£¬¿ÉÌá¸ßÏîÄ¿ÖÊÁ¿ºÍЧÂÊ¡£
¡°µ¥Ôª²âÊԵij£¼ûÎó½â
µ¥Ôª²âÊÔÀË·ÑÁËÌ«¶àµÄʱ¼ä
ËäÈ»²»½øÐе¥Ôª²âÊÔ¿ÉÒÔ¸ü¿ìµÄ½»¸¶µ½ºóÐø²âÊԽ׶Σ¬µ«ÊÇÔÚºóÐø¼¯³É²âÊԽ׶Ρ¢ÏµÍ³²âÊԽ׶λᷢÏÖ¸ü¶àµÄȱÏÝÉõÖÁÈí¼þÎÞ·¨ÔËÐеÄÖÂÃüȱÏÝ£¬ÕâЩȱÏÝÐÞ¸´µÄʱ¼äÔ¶³¬¹ýµ¥Ôª²âÊÔµÄʱ¼ä¡£ÁíÍâûÓе¥Ôª²âÊԵĴúÂëºóÆÚÈí¼þ½øÐÐÖØ¹¹»òÕ߸ĽøÊ±»¨·ÑµÄʱ¼äÒ²±ÈÓе¥Ôª²âÊÔµÄËù»¨·ÑµÄʱ¼äÒª¶àºÜ¶à¡£ËùÒÔ˵ÍêÕû¼Æ»®Ïµĵ¥Ôª²âÊÔÊǶÔʱ¼äµÄ¸ü¸ßЧµÄÀûÓá£
ÒѾÓнӿڼ¯³É²âÊÔ¡¢ÏµÍ³¹¦ÄܲâÊÔ½øÐÐÖÊÁ¿±£Ö¤ÁË£¬¼¯³É²âÊԽ׶ζԽӿڽøÐÐÈ«Ãæ²âÊԾͿÉÒÔ´ïµ½µ¥Ôª²âÊÔµÄÒªÇó£¬Ã»±ØÒª×öÖØ¸´¹¤×÷ÔÚ½øÐе¥Ôª²âÊÔ¡£
½Ó¿Ú²âÊԺ͹¦ÄܲâÊÔÎÞ·¨¸²¸ÇËùÓеĴúÂ룬ÕâÑùÈç¹ûȱÏÝ´æÔÚÔò½«±»ÒÅ©£¬²¢ÇÒBug½«±»´øµ½Éú²úÉÏÈ¥¡£Ò»µ©Óû§Ê¹Óùý³ÌÖд¥·¢ÁËÕâЩûÓвâÊԵĴúÂë¾Í»á´øÀ´ÑÏÖØµÄ¾¼Ãºó¹û¡£
ÅÜͨһ¸öÒµÎñÖ÷Á÷³ÌµÈ¼ÛÓÚ×ö¹ýµ¥Ôª²âÊÔ
ĿǰÓкܶ࿪·¢ÈËÔ±ÈÏΪ£¬¿ª·¢Íê´úÂëÖ®ºó£¬Ð´¸ömain·½·¨£¬´ÓÈë¿Úµ÷ÍêËùÓеÄÄ£¿é£¬×îºóÑé֤Ϸµ»Ø½á¹û£¬¾ÍÈÏΪ×ö¹ýµ¥Ôª²âÊÔÁË£¬ÕâÖÖÏë·¨ÊǼ°Æä´íÎóµÄ£¬Õâ³äÆäÁ¿ËãÒ»ÖÖ²»È«ÃæµÄðÑ̲âÊÔ£¬ÊǶԵ¥Ôª²âÊÔ¸ÅÄîµÄ´íÎóÈÏÖª¡£
΢·þÎñ¼Ü¹¹ÏÂÈçºÎ¿ªÕ¹µ¥Ôª²âÊÔ
ÏÂÃæ½«´Óµ¥Ôª²âÊÔËù´¦µÄ½×¶Î¡¢µ¥Ôª²âÊÔÓÃÀýÉè¼Æ¹æ·¶¡¢µ¥Ôª²âÊÔʵÏÖ¼¸¸öά¶È·Ö±ð½éÉÜÈçºÎÔÚ΢·þÎñ¼Ü¹¹Ï¿ªÕ¹µ¥Ôª²âÊÔ¡£
Ê×ÏÈ¿´Ïµ¥Ôª²âÊÔËù´¦µÄ½×¶Î£¬ÏÂͼΪ·ÇTDDģʽϵ¥Ôª²âÊÔËù´¦µÄ½×¶Î

ÓÉͼ¿É¼ûµ¥Ôª²âÊÔ´¦ÔÚÌØÐÔ·ÖÖ§¿ª·¢Íê³ÉÖ®ºó£¬¾ßÌåµÄÃèÊöÈçÏ£º
1.¿ª·¢ÈËÔ±´ÓMaster·ÖÖ§ÀÈ¡ÌØÐÔ·ÖÖ§×÷Ϊ¿ª·¢·ÖÖ§£»
2.¿ª·¢ÍêÌØÐÔ·ÖÖ§ºó¡¢´úÂë¹¹½¨¡¢µ¥Ôª²âÊÔ¡¢¾²Ì¬´úÂëɨÃ裻
3.ͨ¹ýºóºÏ²¢µ½Master·ÖÖ§£¬ÓÃÓÚͶ²ú¡£
ÏÂÃæ¿´ÏÂʲôÑùµÄµ¥Ôª²âÊÔÓÃÀýÊÇÓÅÐãµÄÓÃÀý£¬ÊǼ´Âú×ãÔËÐÐËÙ¶ÈÓÖÂú×ã¸ß¸²¸ÇÂʵÄÓÃÀý¡£ËæÐи¶¶¨ÖÆÁ˵¥Ôª²âÊԹ淶£¬ÏÂÃæ½ÚÑ¡ÁËÇ¿ÖÆÒªÇóµÄ²¿·Ö¹æ·¶¡£ÓÅÐãµÄµ¥Ôª²âÊÔÓÃÀýÒª·ûºÏÒÔÏÂÓÃÀýÉè¼Æ¹æ·¶µÄÒªÇó¡£
1.±ØÐë×ñÊØ AIR ÔÔò
¡¾ËµÃ÷¡¿µ¥Ôª²âÊÔÔÚÏßÉÏÔËÐÐʱ£¬¸Ð¾õÏñ¿ÕÆø£¨AIR£©Ò»Ñù²¢²»´æÔÚ£¬µ«ÔÚ²âÊÔÖÊÁ¿µÄ±£ÕÏÉÏ£¬È´ÊǷdz£¹Ø¼üµÄ¡£ºÃµÄµ¥Ôª²âÊÔºê¹ÛÉÏÀ´Ëµ£¬¾ßÓÐ×Ô¶¯»¯¡¢¶ÀÁ¢ÐÔ¡¢¿ÉÖØ¸´Ö´ÐеÄÌØµã¡£
A£ºAutomatic£¨×Ô¶¯»¯£© I£ºIndependent£¨¶ÀÁ¢ÐÔ£© R£ºRepeatable£¨¿ÉÖØ¸´£©
2.µ¥Ôª²âÊÔÓ¦¸ÃÊÇÈ«×Ô¶¯Ö´Ðе쬲¢Çҷǽ»»¥Ê½µÄ
¡¾ËµÃ÷¡¿²âÊÔ¿ò¼Üͨ³£ÊǶ¨ÆÚÖ´Ðеģ¬Ö´Ðйý³Ì±ØÐëÍêÈ«×Ô¶¯»¯²ÅÓÐÒâÒå¡£Êä³ö½á¹ûÐèÒªÈ˹¤¼ì²éµÄ²âÊÔ²»ÊÇÒ»¸öºÃµÄµ¥Ôª²âÊÔ¡£µ¥Ôª²âÊÔÖв»×¼Ê¹ÓÃ
System.out À´½øÐÐÈËÈâÑéÖ¤£¬±ØÐëʹÓà assert À´ÑéÖ¤¡£
3.±£³Öµ¥Ôª²âÊԵĶÀÁ¢ÐÔ
¡¾ËµÃ÷¡¿ÎªÁ˱£Ö¤µ¥Ôª²âÊÔÎȶ¨¿É¿¿ÇÒ±ãÓÚά»¤£¬µ¥Ôª²âÊÔÓÃÀýÖ®¼ä¾ö²»ÄÜ»¥Ïàµ÷Óã¬Ò²²»ÄÜÒÀÀµÖ´ÐеÄÏȺó´ÎÐò¡£·´Àý£ºmethod2
ÐèÒªÒÀÀµ method1 µÄÖ´ÐУ¬½«Ö´Ðнá¹û×öΪ method2 µÄÊäÈë
4.µ¥Ôª²âÊÔÊÇ¿ÉÒÔÖØ¸´Ö´Ðе쬲»ÄÜÊܵ½Íâ½ç»·¾³µÄÓ°Ïì
¡¾ËµÃ÷¡¿µ¥Ôª²âÊÔͨ³£»á±»·Åµ½³ÖÐø¼¯³ÉÖУ¬Ã¿´ÎÓдúÂë check inʱµ¥Ôª²âÊÔ¶¼»á±»Ö´ÐС£Èç¹ûµ¥²â¶ÔÍⲿ»·¾³£¨ÍøÂç¡¢·þÎñ¡¢Öмä¼þµÈ£©ÓÐÒÀÀµ£¬ÈÝÒ×µ¼Ö³ÖÐø¼¯³É»úÖÆµÄ²»¿ÉÓá£
5.¶ÔÓÚµ¥Ôª²âÊÔ£¬Òª±£Ö¤²âÊÔÁ£¶È×㹻С£¬ÓÐÖúÓÚ¾«È·¶¨Î»ÎÊÌâ¡£µ¥²âÁ£¶ÈÖÁ¶àÊÇÀ༶±ð£¬Ò»°ãÊÇ·½·¨¼¶±ð
¡¾ËµÃ÷¡¿Ö»ÓвâÊÔÁ£¶ÈС²ÅÄÜÔÚ³ö´íʱ¾¡¿ì¶¨Î»µ½³ö´íλÖᣵ¥²â²»¸ºÔð¼ì²é¿çÀà»òÕß¿çϵͳµÄ½»»¥Âß¼£¬ÄÇÊǼ¯³É²âÊÔµÄÁìÓò
6.ºËÐÄÒµÎñ¡¢ºËÐÄÓ¦ÓᢺËÐÄÄ£¿éµÄÔöÁ¿´úÂëÈ·±£µ¥Ôª²âÊÔͨ¹ý
¡¾ËµÃ÷¡¿ÐÂÔö´úÂ뼰ʱ²¹³äµ¥Ôª²âÊÔ£¬Èç¹ûÐÂÔö´úÂëÓ°ÏìÁËÔÓе¥Ôª²âÊÔ£¬Ç뼰ʱÐÞÕý
7.µ¥Ôª²âÊÔ´úÂë±ØÐëдÔÚÈçϹ¤³ÌĿ¼£ºsrc/test/java£¬²»ÔÊÐíдÔÚÒµÎñ´úÂëĿ¼ÏÂ
¡¾ËµÃ÷¡¿Ô´Âë¹¹½¨Ê±»áÌø¹ý´ËĿ¼£¬¶øµ¥Ôª²âÊÔ¿ò¼ÜĬÈÏÊÇɨÃè´ËĿ¼
ËæÐи¶ÔÚÍÆÐе¥Ôª²âÊÔÂ䵨¹ý³ÌÖвÉÓÃÑÐò½¥½øµÄ·½Ê½£¬Öð²½Ôö¼Óµ¥Ôª²âÊÔÓÃÀý´ïµ½µ¥Ôª²âÊԹ淶Öй涨µÄ¸²¸ÇÂÊÒªÇó¡£ÐèҪ˵Ã÷µÄÊÇÎÒÃDz»ÊÇ×·Ç󸲸ÇÂÊÕâ¸öÊý×ÖÖ¸±ê£¬ÄÇÑù¾ÍÉá±¾ÇóÄ©ÁË£¬ÎÒÃÇÊÇͨ¹ý¸²¸ÇÂÊÕâ¸ö¿ÉÒÔÁ¿»¯µÄÖ¸±êʵÏÖÌá¸ß´úÂëÖÊÁ¿µÄÕâ¸ö¸ù±¾Ä¿µÄ¡£
µÚÒ»½×¶Î£ºµ¥Ôª²âÊÔ¸²¸ÇÂÊÒªÇóÖÁÉÙ25%
µÚ¶þ½×¶Î£ºµ¥Ôª²âÊÔ¸²¸ÇÂÊÒªÇóÖÁÉÙ60%
µÚÈý½×¶Î£ºµ¥Ôª²âÊÔ¸²¸ÇÂÊÒªÇóÖÁÉÙ80%
ËæÐи¶µ¥Ôª²âÊÔ¸²¸ÇÂÊͳ¼ÆÍ¬Ñù²ÉÓÃSonarQubeƽ̨½áºÏJenkins¹¤¾ß£¬Jacocoµ¥Ôª²âÊÔ¸²¸ÇÂʹ¤¾ßÍê³É£¬Õâ¸öͬÉÏÆª½éÉܵľ²Ì¬´úÂëɨÃèÁ÷³ÌÊÇÒ»ÂöÏà³ÐµÄ¡£Í¬Ê±ÒªÇ󿪷¢ÈËÔ±±¾µØµÄIDE¹¤¾ßÖа²×°Jacoco¸²¸ÇÂʲå¼þ£¬µ±±¾µØ¿ª·¢Íêµ¥Ôª²âÊÔÓÃÀý²¢¹¹½¨ºó£¬¼´¿É¿´µ½¸²¸ÇÂÊÐÅÏ¢£¬½ø¶ø¿ÉÒÔ¿ìËÙ²¹³äÓÃÀý£¬´ïµ½¸²¸ÇÂÊÒªÇó¡£
ÒÔEclipseΪÀý£¬µ±¿ª·¢Íêµ¥Ôª²âÊÔ´úÂëºó£¬°´ÕÕÈçϲÙ×÷¼´¿É²é¿´¸²¸ÇÂÊÐÅÏ¢¡£
1.Ñ¡ÔñÐèҪͳ¼ÆµÄjava²âÊÔ´úÂë»òÕß°ü;
2.ÓÒ¼ü£¬Coverage as->Junit
3.¸²¸ÇÂʽá¹û»á×Ô¶¯ÔÚCoverage ÊÓͼÖÐչʾ³öÀ´;
4.ÔÚJava±à¼Æ÷ÖÐÓò»Í¬µÄÑÕÉ«±êʶ´úÂëµÄ¸²¸ÇÇé¿ö¡£
¡¾ËµÃ÷¡¿ ÂÌÉ«----È«¸²¸Ç
ºìÉ«----δ¸²¸Ç
»ÆÉ«----²¿·Ö¸²¸Ç

ÏÂÃæ½éÉÜÏÂÔÚ΢·þÎñÏÂÓ¦¸ÃÈçºÎ½øÐе¥Ôª²âÊÔ¡£ÎªÁËÓÐЧµÄ½øÐе¥Ôª²âÊÔ£¬ÐèÒª×ñÑÒ»¶¨µÄ·½·¨£¬Í¨³£²ÉÓ÷¾¶¸²¸Ç·¨Éè¼Æµ¥Ôª²âÊÔÓÃÀý¡£Ëùν·¾¶¸²¸Ç·¨¾ÍÊÇѡȡ×ã¹»¶àµÄ²âÊÔÊý¾Ý£¬Ê¹³ÌÐòµÄÿÌõ¿ÉÄÜ·¾¶¶¼ÖÁÉÙÖ´ÐÐÒ»´Î£¨Èç¹û³ÌÐòͼÖÐÓл·£¬ÔòÒªÇóÿ¸ö»·ÖÁÉÙ¾¹ýÒ»´Î£©¡£¾ßÌåÉè¼Æ¹ý³Ì²Î¼ûÈçϲ½Ö裺
1.»³ö³ÌÐò¿ØÖÆÁ÷³Ìͼ
2.¼ÆËãȦ¸´ÔÓ¶È
3.ÕÒ³öËùÓгÌÐò»ù±¾Â·¾¶
4.¸ù¾Ý·¾¶Éè¼Æ²âÊÔÊý¾Ý
ÒÔÏÂͼ´úÂëΪÀý˵Ã÷·¾¶¸²¸Ç·¨µÄÉè¼Æµ¥Ôª²âÊԵĹý³Ì

1.Ê×Ïȸù¾Ý´úÂ뻳öÆä¶ÔÓ¦µÄÁ÷³ÌͼÈçÏ£¬Í¼ÖÐÊý×Ö´ú±íÐкš£µ±Ìõ¼þÓï¾äÖаüº¬¶à¸öÌõ¼þʱӦÓèÒÔ²ð·Ö£¬ÈçµÚ13ÐУ¬²ð·ÖΪ13.1ºÍ13.2£»¶ÔÓÚûÓзÖÖ§ºÍÑ»·µÄÓï¾ä¿ÉºöÂÔ£¬ÈçµÚ16ÐС£

ÓÐÁËÁ÷³Ìͼºó£¬ÎÒÃÇ¿ÉÒÔ¸ù¾ÝËü¼ÆËã³öȦ¸´ÔÓ¶È£¬Õâ¸ö¿ÉÒÔ×÷Ϊ²âÊÔÓÃÀýÊýµÄÉÏÏÞ£¬È¦¸´ÔӶȼÆË㹫ʽÈçÏ£º
V£¨G£©= E - N + 2£¬EÊÇÁ÷ͼÖбߵÄÊýÁ¿£¬NÊÇÁ÷ͼÖнáµãµÄÊýÁ¿¡£ V£¨G£©= P + 1
£¬PÊÇÁ÷ͼGÖÐÅж¨½áµãµÄÊýÁ¿¡£
Á½¸ö¹«Ê½ÓÃÄĸö¶¼ÐУ¬×îºóµÄ½á¹ûÓ¦¸ÃÊÇÒ»ÑùµÄ¡£ÕâÀïÎÒÃÇÓõڶþ¸ö¹«Ê½£¬V£¨G£©= 3 + 1 = 4£¬Ò²¾ÍÊÇÎÒÃÇÖ»ÐèÒªÉè¼Æ4ÌõÓÃÀý¼´¿É¸²¸ÇËùÓз¾¶
½ÓÏÂÀ´¾ÍÊÇÕÒ³öËùÓлù±¾Â·¾¶£¬»ù±¾Â·¾¶ÊÇ´Ó³ÌÐòµÄ¿ªÊ¼½áµãµ½½áÊø¿ÉÒÔÑ¡ÔñÈκεÄ·¾¶±éÀú£¬µ«ÊÇÿÌõ·¾¶ÖÁÉÙÓ¦¸Ã°üº¬Ò»ÌõÒѶ¨Òå·¾¶²»ÔøÓõ½µÄ±ß£¬ËùÓеĻù±¾Â·¾¶ÈçÏÂ
A
B C
B D E F
B D E G E F
µÃµ½ÁËËùÓеĻù±¾Â·¾¶£¬Ê£Ïµļòµ¥ÁË£¬Ö»ÐèÒª°´ÕÕ·¾¶Éè¼Æ³ö¶ÔÓ¦µÄÈë²ÎÊý¾Ý¼´¿É
°¸Àý1£ºa = 0, b = 1, ÆÚÍûÖµ -1
°¸Àý2£ºa = 1, b = 0, ÆÚÍûÖµ -1
°¸Àý3: a = 4, b = 2, ÆÚÍûÖµ 2
°¸Àý4£ºa = 8, b = 12, ÆÚÍûÖµ 4
³ý´ËÖ®Í⣬µ¥Ôª²âÊÔÓÃÀýÉè¼Æ»¹ÐèÒª¿¼ÂÇÒÔϳ¡¾°
±ß½çÖµ
ÒµÎñ±ß½ç
Òç³ö±ß½ç
×Ö·û´®¡¢Êý×é¡¢¼¯ºÏµÈµÄ±ß½ç
Òì³£³¡¾°
ÒµÎñÒì³£
ÊäÈëÒì³££¨Èç²ÎÊý²»ºÏ·¨£©
Õý³£³¡¾°
µ¥¸öÄ£¿éµÄÓÃÀýÉè¼Æ¶¼¿ÉÒÔ°´ÕÕ·¾¶¸²¸Ç·¨´ïµ½Óï¾ä¸²¸ÇºÍ·ÖÖ§¸²¸Ç£¬µ«ÊǶÔÓÚÓÐÒÀÀµ¹ØÏµµÄÄ£¿é
ÔÚ΢·þÎñ¼Ü¹¹Ï£¬Ã¿¸öÄ£¿éÖ®¼ä»á´æÔÚÒÀÀµµÄÇé¿ö£¬ÎªÁ˱£³Öµ¥Ôª²âÊԵĶÀÁ¢ÐÔÔÔò£¬ÔÚ²»ÒÀÀµÓÚÍⲿÌõ¼þµÄÇé¿öÏÂÖÆÔì¸÷ÖÖÊäÈëÊý¾Ý£¬ÐèÒª½èÖúMock¼¼Êõ£¬Æä±¾ÖÊÊÇÓÃÒ»¸öÄ£ÄâµÄ¶ÔÏó´úÌæÕæÊµµÄ¶ÔÏó£¨ÀýÈçÒ»¸öÀࡢģ¿é¡¢º¯Êý»òÕß΢·þÎñ£©¡£Ä£Äâ¶ÔÏóµÄÐÐÎªÌØÕ÷ºÍÕæÊµ¶ÔÏó·Ç³£ÏàËÆ£¬²ÉÓÃÏàͬµÄµ÷ÓÃÂß¼£¬·µ»ØÄÚÈݰ´ÕÕ֮ǰԤ¶¨ÒåµÄÄÚÈÝ·µ»Ø£¬Ìṩ·µ»ØÊý¾Ý¡£Mock¼¼ÊõµÄÔÀí¿ÉÒÔÓÃÈçϰ¸Àý½øÐнâÊÍ¡£

µ±Òª½øÐе¥Ôª²âÊÔʱ£¬ÐèÒª¸øA×¢ÈëBºÍC,µ«ÊÇCÓÖÒÀÀµD£¬DÓÖÒÀÀµE¡£Õâ¾Íµ¼ÖÂÁË£¬AµÄµ¥Ôª²âÊÔ²»Âú×ã¶ÀÁ¢ÐÔÔÔò¡£
µ«Ê¹ÓÃÁËMockÀ´½øÐÐÄ£Äâ¶ÔÏóºó£¬¾Í¿ÉÒÔ°ÑÕâÖÖÒÀÀµ½âñֻ¹ØÐÄA±¾ÉíµÄ²âÊÔ£¬ËüËùÒÀÀµµÄBºÍC£¬È«²¿Ê¹ÓÃMock³öÀ´µÄ¶ÔÏ󣬲¢ÇÒ¸øMockBºÍMockCÖ¸¶¨Ò»¸öÃ÷È·µÄÐÐΪ¡£

ÔÚµ¥Ôª²âÊÔ¹¤¾ßµÄÑ¡Ôñ·½Ãæ£¬ËæÐи¶µ¥Ôª²âÊÔ½èÖúJunit¹¤¾ßºÍMockito¹¤¾ß½øÐе¥Ôª²âÊÔ£¬Î¢·þÎñ¼Ü¹¹Ï²»¹ÜÊÇspring
boot»¹ÊÇspring cloud£¬Í¨³£Ê¹ÓÃ@SpringBootTest×¢½â½øÐе¥Ôª²âÊÔ¡£Ò»¸öµ¥Ôª²âÊÔµÄʵÏÖ²½ÖèÖ÷Òª°üÀ¨4²½£º
ÉèÖòâÊÔÊý¾Ý
MockÒÀÀµµÄϵͳ²¢¸ø¶¨Ô¤ÆÚÖµ£¬Èç¹ûûÓÐÒÀÀµÕâ²½¿ÉÒÔÊ¡ÂÔ
ÔÚ²âÊÔÖе÷Ó÷½·¨
¶ÏÑÔ·µ»ØµÄ½á¹ûÊÇ·ñ·ûºÏÔ¤ÆÚ
ÏÂÃæÒÔÒ»¸ö·Ç³£¼òµ¥µÄÀý×Ó½éÉÜÔÚ΢·þÎñ¼Ü¹¹ÏÂÈçºÎ¶Ôspring bootÖеÄcontroller²ãºÍservice²ã½øÐе¥Ôª²âÊÔ¡£

µ÷ÓÃÂß¼¼ò»¯°æÈçͼËùʾ£¬Controllerµ÷ÓÃServiceA£¬ServiceAÒÀÀµServiceB¡£
±»ÒÀÀµServiceBµÄ´úÂëÈçÏÂ
package cn.vbill.quality.service;
import org.springframework...Service;
@Service
public class ServiceB {
public boolean serve(int param) {
return param % 2 == 0;
}
} |
±»²âServiceAµÄ´úÂëÈçÏÂ
package cn.vbill.quality.service;
import org.springframework.beans...Autowired;
import org.springframework.stereotype.Service;
@Service
public class ServiceA {
@Autowired
private ServiceB srvB;
public String doSomething(int param) {
if (srvB.serve(param)) {
return "even";
}
return "obb";
}
} |
ServiceAºÍServiceBµÄÂß¼·Ç³£¼òµ¥£¬ÏÖÔÚ²âÊÔServiceA£¬²½ÖèÈçÏ£º
Ê×ÏÈ£ºÔÚgradleÖÐÔö¼Ó²âÊÔÐèÒªµÄÒÀÀµ°ü
// ¿É¸ù¾Ýʵ¼ÊÇé¿öÌí¼Ó°æ±¾ºÅ
testCompile("org.springframework.boot:spring-boot-starter-test") |
Æä´Î£ºÔÚsrc/test/javaÏÂÃæ´´½¨²âÊÔÀ࣬²ÉÓÃ@SpringBootTest×¢½âºÍMockito¼¼Êõ¶ÔServiceB½øÐвâÊÔºÍMock,¸ü¶àMockitoµÄʹÓÿÉÒԲο¼ÆäËûÎÄÕ£¬ÕâÀï²»¹ý¶à½éÉÜ¡£´úÂëÈçÏ£º

×îºó£¬Ê¹Óø²¸ÇÂʹ¤¾ß²é¿´µ¥Ôª²âÊÔ¸²¸ÇÂÊ£¬ÈçÏÂͼËùʾ£¬ÊµÏÖÁË100%¸²¸Ç¡£

ServiceBûÓÐÈκÎÒÀÀµ£¬Òò´Ë¶ÔËü²âÊԾͰ´ÕÕ³£¹æµÄJunit²âÊÔ¼´¿É£¬ÕâÀï²»¹ý¶à½éÉÜ¡£ÏÂÃæ½éÉÜController²ãµÄµ¥Ôª²âÊÔ£¬ÕûÌåÉÏ¿´
Controller ²ãµÄ²âÊÔºÍ Service ²ã´óÖÂÏàͬ£¬Ö»²»¹ýÊÇÎÒÃDz»È¥Ö±½Óµ÷Óà Controller
µÄ·½·¨£¬¶øÊÇͨ¹ýMockMvcÄ£ÄâHTTPÇëÇó¡£´ÓÂ߼ͼÉÏ¿´ControllerÊÇÖ±½Óµ÷ÓÃServiceA£¬Òò´ËÐèҪʹÓÃMockitoÄ£ÄâServiceA¡£
±»²âController´úÂëÂß¼ÈçÏ£º

²âÊÔÀàÈçÏÂ

×îºó£¬Í¨¹ý¸²¸ÇÂʹ¤¾ß²é¿´µ¥Ôª²âÊÔ¸²¸ÇÂÊΪ100%£¬×öµ½ÁËÈ«¸²¸Ç¡£

ÒÔÉÏÊÇÈçºÎÔÚ΢·þÎñ¼Ü¹¹Ï½øÐе¥Ôª²âÊÔ½øÐÐÁËÏêϸµÄ½éÉÜ£¬ÔÚ΢·þÎñ¼Ü¹¹Ï¸߸²¸ÇÂʵĵ¥Ôª²âÊÔÊDZ£ÕÏ´úÂëÖÊÁ¿µÄµÚÒ»µÀÒ²ÊÇ×îÖØÒªµÄ¹Ø¿Ú£¬Ó¦¸Ã³ÖÖ®ÒԺ㡣
×ܽá
±¾Æª·Ö±ð´Ó΢·þÎñ¼Ü¹¹Ï¿ªÕ¹µ¥Ôª²âÊÔµÄÒâÒå¡¢¶Ôµ¥Ôª²âÊԵij£¼ûÎó½âÒÔ¼°ÈçºÎ¿ªÕ¹µ¥Ôª²âÊÔÈý¸ö·½Ãæ½øÐнéÉÜ£¬µ¥Ôª²âÊÔÊÇÒ»Ïî³É±¾µÍ¡¢ÊÕÒæ¸ßµÄʵ¼ù£¬ÒªÀûÓúÃÕâ°ÑÀû½££¬´òºÃ´úÂëÖÊÁ¿»ù´¡£¬ÎªºóÐøµÄÖÊÁ¿±£Ö¤¹ý³ÌÌíש¼ÓÍß¡£ |