• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

基于mock对象和JUnit框架简化Spring

发布: 2009-12-24 11:42 | 作者: 不详 | 来源: 领测国际测试网采编 | 查看: 275次 | 进入软件测试论坛讨论

领测软件测试网

  viewInvoiceAsPDFController.handleRequest( request, response );

  byte[] responsePDFValues = response.getContentAsByteArray();

  byte[] expectedPDFValues = loadBytesFromTestFile();

  assertTrue( "Did not generate expected PDF content.", Arrays.equals(responsePDFValues,expectedPDFValues ));

  }

  注意,在此你的控制器ViewInvoiceAsPDFController不是返回ModelAndView对象,而是产生了二进制输出—你可以使用一个二进制的数组形式来捕获此控制器并对此进行正确性评价。

  五、事务性单元测试

  到目前为止,你已看到了相对简单的JUnit测试—它仅发生在用mock对象支持的一个控制器的上下文中。但是,如果测试一个Web组件只有在一个事务性上下文(例如,通过依赖性注入与Hibernate集成到一起)中才有意义的情况又会怎么样呢?不必担心,Spring MVC为JUnit框架提供了一个体面的扩展集合—它能准确地提供依赖性注入和事务安全测试(也就是,任何更新在测试完成后都将被回滚)。

  测试步骤:

  让我们看一种假想的情形—你要实现一个组件(例如MyTransactionalController)测试,该组件运行在一个事务性的上下文中(也即,其方法调用的结果发生在一个事务内并且它应该在测试运行完后被回滚):

  1.创建一个定制的JUnit类(MyTransactionalControllerTest),它扩展了Spring的JUnit扩展类 AbstractTransactionalSpringContextTests:

  import org.springframework.test.AbstractDependencyInjectionSpringContextTests;

  public class MyTransactualControllerTest extends AbstractTransactionalSpringContextTests {

  public class.

  2.为了实现从Spring内置的单元测试中发现Spring管理的bean,你需要重载getConfigLocations()方法并且返回上下文文件位置的String数组,请看如下:

  protected abstract String[] getConfigLocations(){ return new String[] {"classpath:/test/spring-context.xml"};}

  3.拥有该类的一个测试属性及其相关联的getter和setter。由于AbstractTransactionalSpringContextTests利用了auto-wiring(这是Spring框架的一个特性—能够根据类属性的名字识别类依赖性并且用Spring bean填入相匹配的名字或ID)技术而且在测试时它将自动地解决类的依赖性问题,所以在Spring上下文文件中该类属性具有与Spring管理的bean一样的名字并且在测试时每个属性都有一个适当命名的setter:

  public MyTransactualController myTransactualController;

  /** * @返回myTransactualController。 */

  public MyTransactualController getMyTransactualController()

  {

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

54/5<12345>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网