首页 > 代码库 > Mockito实例-Junit & Mockito
Mockito实例-Junit & Mockito
前言
前几篇对Mockito的概念及其方法进行了介绍,本篇则提供了一个实例供大家练习,在我们工作中一般都是讲Junit与Mockito相结合一起使用,非常简便。
正题
准备工作-引入Mockito与Junit
我们现在工作中的项目一般都是Maven项目,当然我们公司也不例外,所以前期准备就是先在pom.xml中引入这两个jar包。
<dependencies> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>1.9.5</version> </dependency> <dependency> <artifactId>junit</artifactId> <groupId>junit</groupId> <version>4.11</version> </dependency> </dependencies>
实例代码
package com.demandforce.services.setup; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.test.util.ReflectionTestUtils; import com.demandforce.dao.BusinessDao; import com.demandforce.dao.TextMessageTemplateDao; import com.demandforce.model.Business; import com.demandforce.model.TextMessageTemplate; /** * * @author Rebecca Zhao * @date Jan 6, 2014 * */ @RunWith(MockitoJUnitRunner.class) public class MsgReminderServiceTest { @Mock TextMessageTemplateDao textMessageTemplateDao; @Mock BusinessDao businessDao; MsgReminderService msgReminderService; @Before public void setUpTest() { MockitoAnnotations.initMocks(this); msgReminderService = Mockito.spy(new MsgReminderServiceImpl()); msgReminderService.setTextMessageTemplateDao(textMessageTemplateDao); msgReminderService.setBusinessDao(businessDao); } @Test public void testCopyMsgReminderSetting(){ Long parentBusId = 135001454L; String[] busIds = new String[]{"135001455","135001456"}; Integer type = 204; Mockito.doReturn(null).when(textMessageTemplateDao).selectByBusinessCategory(parentBusId, type); Mockito.doReturn(null).when(businessDao).selectById(parentBusId); List<Business> results = msgReminderService.copyMsgReminderSetting(parentBusId, busIds,type); assertTrue(results.isEmpty()); com.demandforce.model.Business b = new com.demandforce.model.Business(); b.setName("rebecca test"); b.setCity("SFS"); b.setState("C"); TextMessageTemplate tmt = new TextMessageTemplate(); tmt.setDelivery(1); tmt.setBusinessCalendar(true); tmt.setBusinessId(parentBusId); Mockito.doReturn(tmt).when(textMessageTemplateDao).selectByBusinessCategory(parentBusId, type); Mockito.doReturn(b).when(businessDao).selectById(135001455L); List<Business> res = msgReminderService.copyMsgReminderSetting(parentBusId, busIds,type); assertEquals(1,res.size()); } }
原类
package com.demandforce.services.setup; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.ArrayUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.demandforce.dao.BusinessDao; import com.demandforce.dao.TextMessageTemplateDao; import com.demandforce.model.Business; import com.demandforce.model.TextMessageTemplate; /** * * @author Rebecca Zhao * @date Jan 3, 2014 * */ @Service public class MsgReminderServiceImpl implements MsgReminderService { static Logger logger = Logger.getLogger(TextMessageSettingServiceImpl.class); @Autowired TextMessageTemplateDao textMessageTemplateDao; @Autowired BusinessDao businessDao; @Override public List<Business> copyMsgReminderSetting(Long parentBusinessId, String[] businessIds,Integer type) { if(ArrayUtils.isEmpty(businessIds)){ return null; } Integer delivery = null; Boolean businessCalendar = null; List<Business> list = new ArrayList<Business>(); try{ Long parentbusId = parentBusinessId; TextMessageTemplate tmt = textMessageTemplateDao.selectByBusinessCategory(parentbusId, type); if(tmt != null){ delivery = tmt.getDelivery(); businessCalendar = tmt.getBusinessCalendar(); } if(delivery != null){ for(String businessId : businessIds){ Long busId = Long.valueOf(businessId); Business business = businessDao.selectById(busId); if(business != null) list.add(business); } } }catch(Exception e){ logger.error("Error occur while copyTextMessageSetting", e); } return list; } public void setTextMessageTemplateDao(TextMessageTemplateDao textMessageTemplateDao) { this.textMessageTemplateDao = textMessageTemplateDao; } public void setBusinessDao(BusinessDao businessDao) { this.businessDao = businessDao; } }
小结
上面实例就是简单展示了一个普通的Service的Test类如何编写,如果将其与Dao解耦,实现并向开发。
Mockito实例-Junit & Mockito
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。