注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

让一切都逝去吧

排骨炖泥菜/猪肝炒苹果/鱼籽狗肉汤/狗头薏米汤

 
 
 

日志

 
 

spring 使用mock  

2013-05-26 15:30:32|  分类: Spring |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
      现在做的项目一般用spring,单元测试一般用junit4,两者一起用就在测试类加上
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext-test.xml")
public class CustomSpringTest 
...
测试的时候想使用mock,比较了下选择了mockito
有资料说jmockit更强大,就试用mockito的结果来看,应该够用了,就先用它吧,jmockit留着闲的时候再来看

      mockito的使用可以参考很多资料,如果使用了spring 和junit,还想再使用mockito也很简单,直接使用就是。但默认情况下@Mock注解不支持,想要支持@Mock注解注解需要扩展一下,具体怎么做,这里有详细说明:

      怎么做这篇文章讲得很清楚,在这只稍微补充下原理。junit有自己默认的测试执行类,有时测试前想增加些行为,可以使用RunWith注解改变JUnit的默认执行类,这种类只要继承org.junit.runners.BlockJUnit4ClassRunner就可以了。junit测试spring管理的类,spring已经提供了org.springframework.test.context.junit4.SpringJUnit4ClassRunner注解。默认情况就像这样
@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration(locations = { "classpath*:/applicationContext-test1.xml", "classpath*:/applicationContext-test2.xml" })  
@TestExecutionListeners( { DependencyInjectionTestExecutionListener.class, TransactionalTestExecutionListener.class })  
@Transactional  
public class TestClazz

@TestExecutionListeners:这个用于指定在测试类执行之前,可以做的一些动作,如这里的DependencyInjectionTestExecutionListener.class,就可以对一测试类中的依赖进行注入,TransactionalTestExecutionListener.class用于对事务进行管理;这两个都是Srping自带的; 也可以实现自己的Listener类来完成我们自己的操作,只需要继续类org.springframework.test.context.support.AbstractTestExecutionListener就可以了。上面那个例子就自己写了个MockitoDependencyInjectionTestExecutionListener,然后这样使用
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext-test.xml")
@TestExecutionListeners({ 
MockitoDependencyInjectionTestExecutionListener.class, 
TransactionalTestExecutionListener.class})
public class CustomSpringTest
      为了支持
@Mock  
private DemoDao     demoDao; 
      这种看起来方便的方式,提供了自定义的MockitoDependencyInjectionTestExecutionListener。其实个人觉得下面这种方式就够用了,如果多个测试方法中共享,写到setUp里面就行
List<String> list = mock(List.class);
      大部分情况不用扩展直接使用mock就可以了。
  评论这张
 
阅读(3312)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017