Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Mock¿ò¼ÜµÄÈý´Îµü´ú£¬ÈÃÄãµÄµ¥Ôª²âÊÔ¸ü¸ßЧ
 
  5295  次浏览      28
 2018-9-29
 

 

±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚ51cto£¬ÎÄÕÂÖ÷Òª½²½âMock¿ò¼ÜÈý¸ö°æ±¾µÄʵÏÖ·½·¨ºÍÓÅȱµãÒÔ¼°µ¥Ôª²âÊÔÕ¹¿ª·½Ê½µÈÏà¹ØÄÚÈÝ¡£

ÈçºÎ¶¨Òåµ¥Ôª

¶ÔÓÚµ¥Ôª²âÊÔÖеĵ¥Ôª£¬²»Í¬µÄÈËÓв»Í¬µÄ¿´·¨£º¿ÉÒÔÀí½âΪһ¸ö·½·¨£¬¿ÉÒÔÀí½âΪһ¸öÍêÕûµÄ½Ó¿ÚʵÏÖ£¬Ò²¿ÉÒÔÀí½âΪһ¸öÍêÕûµÄ¹¦ÄÜÄ£¿é»òÕßÊǶà¸ö¹¦ÄÜÄ£¿éµÄÒ»¸öñîºÏ¡£

¸ù¾ÝÒÔÍùµÄµ¥Ôª²âÊÔ¾­Ñ飬ÔÚÉè¼Æµ¥Ôª²âÊÔÓÃÀýʱ£¬µ±Õë¶Ô·½·¨¼¶±ðÕ¹¿ªµ¥Ôª²âÊÔʱ£¬ÖØµã¹Ø×¢µÄÊÇ·½·¨µÄµ×²ãÂß¼­;µ±Õë¶ÔµÄÊÇÄ£¿éʱ£¬Õë¶ÔµÄÊÇʵ¼ÊµÄÒµÎñÂß¼­ÊµÏÖ;µ±Õë¶ÔÕûºÏºóµÄÄ£¿é½øÐвâÊÔʱ£¬Ò»°ã³ÆÖ®Îª¼¯³É²âÊÔ¡£

²»¹ÜÊǵ¥Ôª²âÊÔ»¹ÊǼ¯³É²âÊÔ£¬¶¼¿ÉÒÔͳһµÄÀí½âΪµ¥Ôª²âÊÔ¡£ÒòΪËûÃǵı¾Öʶ¼ÊǶԷ½·¨»ò½Ó¿ÚµÄÒ»ÖÖ²âÊÔÐÎʽ£¬Ö»ÊÇËù´¦µÄ½×¶Î²»Ò»Ñù°ÕÁË¡£

1. ¼¯³É²âÊÔÓ¦¸ÃÓÉË­±àд

ÔÚÎÒÃǵÄʵ¼Ê¹¤×÷ÖУ¬Ñз¢ÈËÔ±ÔÚÌá½»´úÂë֮ǰ£¬»áÉè¼ÆÒ»Ð©¡°Ã°Ñ̲âÊÔ¡±¼¶±ð¼¯³É²âÊÔÓÃÀý¡£µÈµ½Õû¸ö¹¦ÄÜ¿ª·¢Íê³Éºó£¬²âÊÔÈËÔ±»á¸ù¾ÝÒµÎñÐèÇóºÍÉè¼ÆµÄ²âÊÔÓÃÀý£¬À´½øÐÐÕûÌåµÄ¼¯³É²âÊÔÓÃÀýµÄ±àд¡¢Ö´ÐС¢Ê§°ÜÓÃÀý·ÖÎö£¬ÒÔ¼°´úÂëµÄµ÷ʽºÍÎÊÌâ´úÂëµÄ¶¨Î»µÈ¹¤×÷¡£

2. ¼¯³É²âÊÔÓÃÀý

ÒµÎñÏà¹ØµÄ²âÊÔÖ÷ÒªÊÇͨ¹ýspring-testÀ´½øÐм¯³É²âÊÔ£¬»ù±¾µÄ²âÊԽṹΪÏȶ¨ÒåÒ»¸ö»ùÀàÓÃÀ´³õʼ»¯±»²âÊÔÀà¡£

²âÊÔ»ùÀඨÒå½á¹¹ÈçÏ£º

@RunWith(SpringJUnit4ClassRunner.class)
ContextConfiguration(locations = {"classpath:./spring/applicationContext.xml"})
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
public class BaseSpringJunitTest {
@Autowired
protected BusinessRelatedServiceImpl businessRelatedService;
}

ÒµÎñÏà¹ØµÄ²âÊÔÀඨÒåÈçϸñʽ£º

public class BusinessRelatedServiceImplDomainTest extends BaseSpringJunitTest {
@Test
public void testScenario1 (){
new Thread(new DOSAutoTest("testScenario1")).start();
Thread.sleep(1000*60*1);
String requestJson=""//²âÊÔÈë²Î;
RequestPojo request=( RequestPojo )JSONUtils.jsonToBean(requestJson,RequestPojo .class);
ResponsePojo response= businessRelatedService.businessRelatedMethod(ResponsePojo );
//ÒµÎñÏà¹ØµÄassertÇøÓò
}
}

3. ÈçºÎ½â¾öÏÂÓÎϵͳÒÀÀµ

businessRelatedMethod·½·¨ÔÚ´¦ÀíÒµÎñÂß¼­µÄ¹ý³ÌÖÐÐèÒªµ÷ÓÃÏÂÓÎJSF(Jingdong Service Framework£¬ÍêÈ«×ÔÖ÷Ñз¢µÄ¸ßÐÔÄÜRPC·þÎñ¿ò¼Ü)ÌṩµÄ¶©µ¥½Ó¿Ú(OrderverExportService)£¬²¢¸ù¾ÝÈë²ÎÖеĶ©µ¥±àºÅ»ñÈ¡¶©µ¥µÄÏêϸÐÅÏ¢(ResultPojo getOrderInfoById (long orderId))¡£

ÄÇôÈçºÎ»ñÈ¡ÏÂÓÎJSF½Ó¿ÚµÄ·µ»ØÕýÈ·Êý¾Ý¾Í±ä³ÉÁËÒ»¸ö±È½ÏÖØÒªµÄÎÊÌâ¡£Èç¹ûÊÇÔÚ¹¦ÄܲâÊÔ»òÕßÁªµ÷²âÊԽ׶Σ¬¿ÉÒÔÓÉÏÂÓβâÊÔÈËÔ±À´ÌṩÊý¾Ý¡£²»¹ýÕâÑù¹µÍ¨ºÍ²âÊԳɱ¾½Ï¸ß£¬ÎÞ·¨Âú×ãÒµÎñ¿ìËÙÉÏÏߺͱ仯µÄÒªÇó£¬ÓÈÆäÔÚ¼¯³É²âÊÔ½×¶ÎÕâ¸öÎÊÌâ¾Í±äµÃÓÈΪÃ÷ÏÔ£¬ÒòΪÏÂÓÎÊý¾Ý¶ÔÓÚÉÏÓÎÀ´ËµÊDz»¿É¿ØµÄ¡£ÕâÑùmockÏÂÓÎÊý¾Ý¾Í±äµÃÓÈΪ½ô¼±ºÍÖØÒª¡£

4. Mock¿ò¼ÜµÄÑ¡Ôñ

ÔÚÕû¸öjavaÉú̬ȦÖУ¬Ö§³ÖmockµÄ¿ªÔ´¿ò¼Ü»¹ÊDZȽ϶àµÄ£¬±ÈÈç³£ÓõÄmockito¡¢powermock¡¢easymockºÍjmockitµÈ¿ªÔ´¿ò¼Ü¡£ÕâЩ¿ò¼ÜÔÚmock·½Ãæ¶¼¾ßÓбȽÏÇ¿´óµÄ¹¦ÄÜÓë±È½Ï¹ã·ºµÄʹÓÃÁ¿¡£µ«ÊÇÕâЩ¿ò¼Ü¶¼¾ßÓÐÒ»¸öÏàͬµÄȱµã£¬ÄǾÍÊÇÐèÒª»ò¶à»òÉٵıàÂ빤×÷À´mockËùÐèÒªµÄ½Ó¿Ú·µ»ØÊý¾Ý¡£

ÔÚÉè¼Æmock¿ò¼ÜµÄʱºò£¬ÎÒÃÇ¿¼Âǵ½¾¡Á¿ÈÃдµ¥Ôª²âÊÔµÄÈËÔ±»òÑз¢ÈËÔ±ÉÙ±àÂë»ò²»±àÂ룬À´»ñÈ¡²»Í¬µÄÒµÎñ³¡¾°ËùÐèÒªµÄ²âÊÔÊý¾Ý¡£

Mock¿ò¼Ü µÚÒ»°æ

¸Ã°æ±¾µÄmock¿ò¼ÜµÄÕûÌå˼ÏëΪ£º½áºÏJSFµÄÌØÐÔ£¬OverrideËùÓÐÏÂÓνӿڵķ½·¨£¬È»ºó½«ÊµÏÖÏÂÓνӿڵÄÓ¦Óò¿Êðµ½²âÊÔ»·¾³£¬·¢²¼Ò»¸öÓбðÓëÕæÊµÏÂÓνӿڵķþÎñ£¬ÔÚ½Ó¿Úµ÷ÓõÄʱºò£¬Í¨¹ý²»Í¬µÄJSF½Ó¿Ú±ðÃûÀ´½øÐÐÇø·Ö¡£MockµÄÊý¾Ý´æ´¢ÔÚÊý¾Ý¿âÖС£

¸Ã¿ò¼ÜÀàµ÷ÓùØÏµ£º

Mock½Ó¿ÚµÄ¾ßÌåʵÏÖ£º

public class OrderverExportServiceImp extends OrderverExportServiceAdapter {
@Resource
private OrderverMapper orderverMapper;

@Override
public ResultPojo getOrderInfoById (long orderId) {
OrderverPojo orderverMock=orderverMapper.getOrderId(new Long(orderId).toString());
ResultPojo result=new ResultPojo ();
result.setFiled1(null);
result.setFiled1(0);
result.setFiled2(null);
result.setFiled3(null);
result.setResult(true);
¡­//mockÐèÒªµÄÊý¾Ý
result.setReturnObject(orderver);
return result;
}
}

Mock·þÎñ·¢²¼ÍêºóµÄЧ¹û£º

ÔÚ¼¯³É²âÊԽ׶Σ¬Ö»ÐèÒªÐ޸ĸýӿڵÄJSF±ðÃû£¬¾Í¿ÉÒÔʵÏָýӿڵÄmockµ÷Óá£

<jsf:consumer id="orderverExportServiceJsf" interface="xxx.xxx.xxx.xxx.xxx.OrderverExportService"
protocol="jsf" timeout="${timeout}"
alias="${alias}" retries="2" serialization="hessian">
</jsf:consumer>
alias=orderver_mock

¸Ã¿ò¼ÜµÄÓÅȱµã

Óŵ㣺

×ö¼¯³É²âÊÔÓÃÀýÉè¼ÆÊ±£¬²»Óñàд´úÂ룬ֻÐèҪά»¤²âÊÔ³¡¾°ËùÐèÒªµÄ·µ»ØÊý¾Ý;

¸Ã¿ò¼Ü²»½ö¿ÉÒÔÓÃÔÚ¼¯³É²âÊÔÖУ¬ÔÚÏÂÓνӿÚÎÞ±ä¸üµÄǰÌáÏ£¬Í¬Ê±»¹¿ÉÒÔÓÃÔÚºóÐøÏµÍ³²âÊÔÓëÁªµ÷²âÊԽ׶Ρ£

ȱµã£º

mock·þÎñµÄ·¢²¼ÒÀÀµÓÚ·þÎñÆ÷ÓëÊý¾Ý¿â£¬µ±ÒÀÀµµÄ·þÎñÆ÷»òÊý¾Ý¿â³öÏÖµø»úÇé¿öʱ£¬¸Ãmock·þÎñ²»ÓÃ;

¸Ã¿ò¼ÜµÄά»¤³É±¾±È½Ï´ó£¬µ±ÏÂÓÎÒÀÀµµÄ½Ó¿Ú½Ï¶àʱ£¬ËùÓеķþÎñ°üº¬µÄ·½·¨¾ùÐèÒª½øÐÐoverride;

µ±ÏÂÓεĽӿڶ¨Òå·¢Éú±ä»¯Ê±±ÈÈçÐÂÔö½Ó¿Ú·½·¨£¬¸Ãmock·þÎñÐèÒªÖØÐÂoverride¸ÃÐÂÔöµÄ·½·¨²¢ÇÒÐèÒªÖØÐ´ò°ü²¿Êð;

ÏÂÓνӿڷ½·¨µÄÊý¾Ý½á¹¹·¢Éú±ä»¯Ê±£¬´æ´¢Êý¾ÝµÄÊý¾Ý±í½á¹¹ÐèÒª×öÏàÓ¦µÄµ÷Õû£¬¶ÔÓÚÒµÎñ±ä»¯½Ï¿ìµÄϵͳ£¬ÕâÖÖÀàÐ͵ĸĶ¯ÆµÂÊ»¹Êǽϸߡ£

Mock¿ò¼Ü µÚ¶þ°æ

ΪÁ˽â¾öÉÏÊömock¿ò¼ÜÒÀÀµ·þÎñÆ÷ÓëÊý¾Ý¿âµÄÎÊÌ⣬ÎÒÃÇÓÖ×öÁ˵ڶþ´Î³¢ÊÔ¡£½«mock¿ò¼ÜÉè¼ÆÎªjar°üµÄÐÎʽ£¬Ìṩ¸ø³ÌÐòÀ´µ÷Óá£ÔÚÏÂÓνӿڵÄʵÏÖ·½Ê½Éϵڶþ°æÓëµÚÒ»°æ±£³Ö²»±ä£¬Í¬Ê±ÒµÎñÊý¾Ý²»·ÅÊý¾Ý¿â£¬¶øÊǽ«ÒµÎñÊý¾Ý·Åµ½ÎļþÖС£±ä»¯µÄµãΪ½Ó¿Úµ÷ÓÃÉÏÐèÒª½«¶ÔÓ¦µÄjsf:comsumer½ÚµãÌæ»»Îª¶ÔÓ¦µÄʵ¼ÊmockµÄʵÏÖÀà¡£

Mock½Ó¿ÚµÄʵÏÖ£º

@Service("orderverExportService")
public class OrderverExportServiceMock extends OrderverExportServiceAdapter {
@Override
public ResultPojo getOrderInfoById(long orderId) {
ResultPojo result=new ResultPojo ();
result.setFiled1(null);
result.setFiled1(0);
result.setFiled2(null);
result.setFiled3(null);
result.setResult(true);
¡­//mockÐèÒªµÄÊý¾Ý
result.setReturnObject(orderver);
return result;
}
}

Mock½Ó¿Úµ÷ÓÃÅäÖãº

<!--<jsf:consumer id="orderverExportServiceJsf" interface="xxx.xxx.xxx.xxx.xxx.OrderverExportService" protocol="jsf" timeout="${timeout}"alias="${alias}" retries="2" serialization="hessian">
</jsf:consumer>-->
<bean id="orderverExportServiceJsf" class="xxx.xxx.xxx.xxx.xxx.OrderverExportServiceMock"></bean>

¸Ã¿ò¼ÜµÄÓÅȱµã

Óŵ㣺

×ö¼¯³É²âÊÔÓÃÀýÉè¼ÆÊ±£¬²»Óñàд´úÂ룬ֻÐèҪά»¤²âÊÔ³¡¾°ËùÐèÒªµÄ·µ»ØÊý¾Ý;

Ïà±È½ÏµÚÒ»¸ö°æ±¾£¬¸Ã°æ±¾ÔÚÖ´ÐÐЧÂÊÉÏÓÐÁ˽ϴóµÄÌáÉý£¬ÒòΪmockÀàµÄ¼ÓÔØÊÇ×ߵı¾µØSpringÅäÖÃÎļþ£¬Í¬Ê±Êý¾Ý¼ÓÔØÒ²ÊÇ×ߵı¾µØÎļþ;

ÎÞÐèÔÙÒÀÀµÓÚ·þÎñÆ÷²¿ÊðºÍÊý¾Ý¿âÒÀÀµ¡£

ȱµã£º

¸Ã¿ò¼ÜµÄά»¤³É±¾±È½Ï´ó£¬µ±ÏÂÓÎÒÀÀµµÄ½Ó¿Ú½Ï¶àʱ£¬ËùÓеķþÎñ°üº¬µÄ·½·¨¾ùÐèÒª½øÐÐoverride;

µ±ÏÂÓεĽӿڶ¨Òå·¢Éú±ä»¯Ê±±ÈÈçÐÂÔö½Ó¿Ú·½·¨£¬¸Ãmock·þÎñÐèÒªÖØÐÂoverride¸ÃÐÂÔöµÄ·½·¨²¢ÇÒÐèÒªÖØÐ´ò°ü£¬È»ºóÉÏ´«µ½maven²Ö¿â;

ÏÂÓνӿڷ½·¨µÄÊý¾Ý½á¹¹·¢Éú±ä»¯Ê±£¬¶ÔÓÚÒµÎñ±ä»¯½Ï¿ìµÄϵͳ£¬ÕâÖÖÀàÐ͵ĸĶ¯ÆµÂÊ»¹Êǽϸߡ£

Mock¿ò¼Ü µÚÈý°æ

Ëæ×ÅÐèÒªmockµÄ½Ó¿Ú±äµÄÔ½À´Ô½ÅÓ´ó£¬ÒÔÉÏÁ½ÖÖmock¿ò¼ÜµÄʵÏÖµÄȱµã¾Í±äµÄÔ½À´Ô½Í»³ö¡£¸Ã¿ò¼Ü¿ÉÒÔ˵´Ó¸ù±¾ÉϽâ¾öÁËÉÏÊö¿ò¼ÜʵÏÖµÄÎÊÌâ¡£ÒòΪ¸Ã¿ò¼Ü³ä·ÖÀûÓÃÁËJDKµÄ¶¯Ì¬´úÀí£¬·´Éä»úÖÆÒÔ¼°JSFÌṩµÄ¸ß¼¶ÌØÐÔÀ´ÊµÏÖÎÒÃǵÄmock¿ò¼Ü¡£¿ò¼Üά»¤ÈÎÎñ¿ÉÒÔ×öµ½ÎÞÐè×ö¸ü¶àµÄÕë¶Ô½Ó¿ÚµÄ±àÂëÈÎÎñ¡£²âÊÔÈËÔ±Ö»ÐèÒª½«Öصã·ÅÔÚ²âÊÔÊý¾ÝµÄ×¼±¸ÉÏ¡£

¿ò¼ÜÕûÌåµ÷ÓÃʱÐòͼ£º

¿ò¼ÜµÄºËÐÄÀàͼ£º

ÆäÖÐDOSAutoTestÀàÓÃÀ´Æô¶¯ºÍ·¢²¼JSFµÄmock½Ó¿Ú£¬JSFMockͨ¹ý¶¯Ì¬´úÀíµÄ·½Ê½£¬ÊµÏÖÏÂÓνӿڵÄmock¹¦Äܲ¢¸ù¾Ý²âÊÔ³¡¾°»ñÈ¡¶ÔÓ¦µÄmockÊý¾Ý¡£

ÆäÖУ¬mockµÄÊý¾ÝÒÔjson¸ñʽ´æ´¢ÔÚmock¿ò¼ÜÏîÄ¿¹¤³ÌµÄÖ¸¶¨Ä¿Â¼Ï¡£

¸Ã¿ò¼Ü½â¾öµÄÎÊÌ⣺

ʡȥÁËÀûÓõÚÈý·½mock¿ò¼ÜÈçjmockit,mockito,powermockʱ£¬ÐèÒªÔÚµ¥Ôª²âÊÔ»ò¼¯³É²âÊÔÀàÖÐдmock´úÂëµÄÂé·³;

¸Ã¿ò¼ÜÄ£ÄâÊý¾Ý·µ»ØÊ±£¬ÍêÈ«µÄÄ£ÄâÁ˽ӿÚÖ®¼äµÄµ÷ÓùØÏµ;

²âÊÔÈËÔ±»òÑз¢ÈËÔ±ÔÚÀûÓøÿò¼ÜmockÊý¾Ýʱ£¬ÎÞÐè¶îÍâµÄ´úÂ룬¾Í¿ÉÒÔʵÏÖmockÊý¾ÝµÄ·µ»Ø;

ÔÚÄ£ÄâÏÂÓÎÊý¾Ý·µ»ØÊ±£¬·¢²¼µÄmock½Ó¿Úµ÷ÓÃÍê³Éºó¾Í×ÔÐÐÏú»Ù£¬ÎÞÐè¶îÍâ·þÎñÆ÷½øÐв¿ÊðÓëά»¤¡£

ÔÚ½øÐнӿÚmockʱ£¬ÎÞÐèÔÚmock¿ò¼ÜÖÐÌí¼ÓÏà¹ØµÄ½Ó¿ÚmavenÒÀÀµ¡£

µ¥Ôª²âÊÔÕ¹¿ª·½Ê½

1. µ¥Ôª²âÊÔÓ¦¸ÃÓÉË­±àд

µ¥Ôª²âÊÔÓÉË­±àд?Õë¶ÔÕâ¸öÎÊÌ⣬´ó¼ÒÔÚÍøÉÏ»áÕÒµ½²»Í¬µÄ¹Ûµã£º

Ò»¸ö¹ÛµãÊÇ£¬Ë­Ð´´úÂ룬˭×Ô¼ºÐ´µ¥Ôª²âÊÔ¡£µ±È»£¬ÓеĽá¶Ô±à³ÌÀïÃæ£¬Ò²ÓÐÏ໥дµÄ£¬²»¹ý£¬Õâ¸ö¹ý³ÌÖУ¬Á½¸öÈËÊǹ²Í¬Íê³ÉµÄ´úÂë¡£Ò²²»Î¥·´Ë­Ð´´úÂë˭дµ¥Ôª²âÊÔµÄÔ­Ôò¡£

ÁíÒ»¸ö¹ÛµãÊǵ¥Ôª²âÊÔÓ¦¸ÃÓÉÆäËüµÄÑз¢ÈËÔ±»ò²âÊÔÈËÔ±À´½øÐбàд£¬ÀíÓÉ´ó¸Å¿ÉÒÔÀí½âΪ¶ÔÓÚ·Ç´úÂë±àдÈËÔ±À´Ëµ£¬ÔÚÉè¼Æµ¥Ôª²âÊÔÓÃÀýµÄʱºò£¬¶ÔÓ¦µÄÊÇÒ»¸öºÚºÐ¡£ÔÚÕâÑùµÄ±³¾°Ï£¬Éè¼Æ³öÀ´µÄÓÃÀý¸²¸Ç³Ì¶È¸ü¸ß¡£

2. µ¥Ôª²âÊÔµÄÐÐÒµÏÖ×´

Èç¹ûÑз¢À´¸ºÔðµ¥Ôª²âÊԵıàд£¬ºÜ¶àʱºòÑз¢ÈËÔ±¶¼²»±àдµ¥Ôª²âÊÔ¡£Ñз¢ÈËÔ±²»±àдµ¥Ôª²âÊÔµÄÔ­ÒòÆäʵҲÊDZȽÏÈÝÒ×Àí½âµÄ£¬ÒòΪ±àдµ¥Ôª²âÊÔÓÃÀý¹¤×÷Ì«ºÄʱ¡£ÓÐʱºòÑз¢µÄ¾­Àí»òÏîÄ¿µÄÒµÎñ·½»áÈÏΪµ¥Ôª²âÊÔÓÃÀý»á¼õ»ºÏîÄ¿µÄÕûÌå½ø¶È¡£ÓÐʱºòÉõÖÁÕû¸ö¹«Ë¾²ãÃæ¶¼²»ÈϿɻ¨·Ñ´óÁ¿µÄʱ¼äÔÚµ¥Ôª²âÊÔÉÏÊǺÏÀíµÄ£¬ÓÈÆäÊÇÔÚÏîÄ¿ÖÜÆÚ½ôÕźÍÒµÎñ±ä¶¯½Ï´óµÄÏîÄ¿ÉÏ¡£ÒòΪµ¥Ôª²âÊÔ´ÓÒ»¶¨³Ì¶ÈÉÏÀ´ËµÈ·ÊµÔö¼ÓµÄÑз¢ÈËÔ±µÄ±àÂëÁ¿£¬Í¬Ê±»¹»áÔö¼Ó´úÂëµÄά»¤³É±¾¡£

Èç¹û²âÊÔÀ´¸ºÔðµ¥Ôª²âÊԵıàд£¬Ä¿Ç°µÄÏÖ×´ÊDzâÊÔÈËÔ±ÐèҪʱ¼äÀí½â´úÂ룬дµ¥Ôª²âÊÔµÄʱ¼ä»á±ä³¤¡£ÓдúÂëÐÞ¸ÄÖ®ºó£¬ÔÚÏîÄ¿µÄ²âÊÔѹÁ¦Ö®Ï£¬ÓеIJâÊÔÈËÔ±£¬¾ÍÑ¡Ôñ²»Î¬»¤µ¥Ôª²âÊÔ£¬¶øÑ¡Ôñ¸Ï½ôÍê³É´«Í³µÄÊÖ¹¤²âÊÔ¡£

3. µ¥Ôª²âÊÔÓÃÀý×Ô¶¯Éú³É

È˹¤±àд²âÊÔÓÃÀý³É±¾Ôö¼Ó£¬ÄÇôÎÒÃÇ¿¼ÂÇÊÇ·ñ¿ÉÒÔͨ¹ý×Ô¶¯Éú³ÉµÄ·½Ê½À´ÊµÏÖµ¥Ôª²âÊÔÄØ?EvoSuiteÊÇÓÉSheffieldµÈ´óѧÁªºÏ¿ª·¢µÄÒ»ÖÖ¿ªÔ´¹¤¾ß£¬ÓÃÓÚ×Ô¶¯Éú³É²âÊÔÓÃÀý¼¯£¬Éú³ÉµÄ²âÊÔÓÃÀý¾ù·ûºÏJunitµÄ±ê×¼£¬¿ÉÖ±½ÓÔÚJunitÖÐÔËÐС£

¶ÔÓÚ·ÇÒµÎñÏà¹ØµÄÄ£¿é£¬ÔÚµ¥Ôª²âÊÔµÄʵ¼ùÖУ¬¾Í¿ÉÒÔÖ±½ÓʹÓÃÉÏÊö¹¤¾ßÀ´×Ô¶¯Éú³Éµ¥Ôª²âÊÔ´úÂë¡£ËäÈ»¸Ã¹¤¾ßÖ»ÊǸ¨Öú²âÊÔ£¬²¢²»ÄÜÍêȫȡ´úÈ˹¤£¬²âÊÔÓÃÀýµÄÕýÈ·Óë·ñ»¹ÐèÈ˹¤Åжϣ¬µ«ÊÇͨ¹ýʹÓôË×Ô¶¯²âÊÔ¹¤¾ßÄܹ»ÔÚ±£Ö¤´úÂ븲¸ÇÂʵÄǰÌáϼ«´óµØÌá¸ß²âÊÔÈËÔ±µÄ¿ª·¢Ð§ÂÊ¡£

ÏÂÃæÀ´Ïêϸ½éÉÜÈçºÎʹÓøù¤¾ßÉú³Éµ¥Ôª²âÊÔÓÃÀýÒÔ¼°ÈçºÎ¼ì²éµ¥ÔªÓÃÀýµÄÕýÈ·ÐÔ¡£

EvoSuiteΪMavenÏîÄ¿ÌṩÁËÒ»¸ö²å¼þ£¬¸Ã²å¼þµÄ¾ßÌåÅäÖÃÈçÏÂËùʾ£º

<plugin>
<groupId>org.evosuite.plugins</groupId>
<artifactId>evosuite-maven-plugin</artifactId>
<version> ${evosuiteVersion} </version>
<executions><execution>
<goals>
<goal>
prepare
</goal>
</goals>
<phase>
process-test-classes
</phase>
</execution></executions>
</plugin>

³ýÁËÐèÒªÅäÖÃÉÏÊöpluginÍ⣬maven»¹ÐèÒª×öÈçϵÄÅäÖãº

<dependency>
<groupId>org.evosuite</groupId>
<artifactId>evosuite-standalone-runtime</artifactId>
<version>${evosuiteVersion}</version>
<scope>test</scope>
</dependency>
<!--ÉÏÊöÒÀÀµÖ÷ÒªÊÇÓÃÀ´×Ô¶¯Éú³Éµ¥Ôª²âÊÔÓÃÀý-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin-version}</version>
<configuration>
<systemPropertyVariables>
<java.awt.headless>true</java.awt.headless>
</systemPropertyVariables>
<testFailureIgnore>true</testFailureIgnore>
<skipTests>false</skipTests>
<properties>
<property>
<name>listener</name>
<value>org.evosuite.runtime.InitializingListener</value>
</property>
</properties>
</configuration>
</plugin>

ÉÏÊöpluginÖ÷ÒªÊÇÓÃÀ´»ìºÏÖ´ÐÐÊÖ¶¯Éè¼ÆµÄµ¥Ôª²âÊÔÓÃÀýºÍʹÓÃEvoSuite×Ô¶¯Éú³ÉµÄµ¥Ôª²âÊÔÓÃÀý¡£

ÒÔÉÏEvoSuiteËùÐèµÄpluginºÍmavenÒÀÀµÅäÖÃÍê³ÉÖ®ºó£¬¾Í¿ÉÒÔʹÓÃmavenÃüÁîÀ´×Ô¶¯Éú³Éµ¥Ôª²âÊÔÓÃÀý²¢Ö´ÐÐÁË¡£

mvn -DmemoryInMB=2000 -Dcores=2 evosuite:generate evosuite:export test

Éú³É²âÊÔÓÃÀýºó£¬¿ÉÒÔͨ¹ýÈ˹¤ÅŲéÉú³É²âÊÔÓÃÀýµÄÕýÈ·ÐÔ¡£

дÔÚ×îºó

²»¹ÜÊÇÑз¢»¹ÊDzâÊÔ¸ºÔ𼯳ɻòµ¥Ôª²âÊÔ£¬Ñ¡È¡ÊʺÏ×ÔÉíÏîÄ¿µÄmock¿ò¼Ü£¬Ò»·½Ãæ¿ÉÒÔËõ¶Ì²âÊÔ´úÂëµÄ±àдʱ¼ä£¬ÁíÒ»·½Ãæ¿ÉÒÔ¼ÓËÙ²âÊÔ´úÂëµÄÖ´ÐÐЧÂÊ£¬Í¬Ê±ÓÖ¿ÉÒÔ½µµÍ²âÊÔ´úÂëµÄά»¤³É±¾¡£²»¹ÜÊÇÐÐÒµÖÐͨÓõÄmock¿ò¼Ü»¹ÊǶ¨ÖÆ»¯µÄ¿ò¼Ü£¬¶¼¿ÉÒԹ㷺µÄÓ¦ÓõIJâÊÔÖС£

ÒòΪ×ömock¿ò¼Ü²»ÊÇÄ¿µÄ£¬Ä¿µÄÊÇΪÁËÄܸßЧµÄÉè¼Æ³ö¸ü¶àµÄ²âÊÔ¸²¸Ç³¡¾°£¬À´½øÒ»²½ÌáÉý²âÊÔЧÂÊ¡¢±£Ö¤²úÆ·ÖÊÁ¿ºÍ½«²âÊÔÈËÔ±´Ó·±ÖصÄÊÖ¹¤²âÊÔÖеÃÒÔ½â·Å¡£

 
   
5295 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù