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