快速业务通道

Spring单元测试 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

Spring单元测试

时间:2011-03-13

Spring本身即是一个容器,所有的业务对象都是通过Spring容器来管理。Spring的注入特点让我们轻松地解除了类与类之间的耦合性。但是,也给我们写单元测试带来了不少的麻烦,不过这种情况是在没有考虑Spring提供的单元测试工具的情况下才会发生的。

1. 准备需要的jar包。

需要准备spring-mock.jar和naming-factory-dbcp.jar。第一个jar包中包括了Spring提供的单元测试工具类,第二个jar包是提供建立JDBC连接所需要的类。

2. 继承AbstractTransactionalDataSourceSpringContextTests。

Spring提供了几种基于Junit的单元测试工具类,这里只介绍AbstractTransactionalDataSourceSpringContextTests,其他的请看官方文档。这是一个具有事务的单元测试用例,你可以设置单元测试成功后数据库事务是提交还是回滚,默认为回滚。

在继承类中需要实现getConfigLocations方法,这个方法主要是为了取得Spring的application-context.xml文件。

protected String[] getConfigLocations() {   String[] config = new String[] {     "xxx-applicationContext.xml", "xxxx-applicationContext.xml"   };   return config; }

注意,第一,如果使用上面的写法,这些xml文件必须在classpath下;第二,TransactionManager只能定义一个。

3. 写自己的测试用例。

示例代码如下:

public abstract class MyDependencyInjectionSpringContextTests   extends AbstractTransactionalDataSourceSpringContextTests {   protected ServiceContext context;   public MyDependencyInjectionSpringContextTests() {   }   /**   * 重写父类的onSetUpBeforeTransaction方法   **/   protected void onSetUpBeforeTransaction() throws Exception {     super.onSetUpBeforeTransaction();     //此处可以加入你想进行的统一操作     ......     //调用子类的处理     beforeSetUp();   }   protected abstract void beforeSetUp() throws Exception;   protected String[] getConfigLocations() {     String[] config = new String[] {       "service-applicationContext.xml", "dao-applicationContext.xml"     };     return config;   } }

====================================================================

public class MockServiceTest   extends MyDependencyInjectionSpringContextTests {   Mock mock;   MockService service;   protected void beforeSetUp() throws Exception {     //初始化测试需要使用的数据     mock=new Mock();     mock.setName("test");     mock.setType(1);     service=(MockService) applicationContext.getBean("mockService");   }   public void testAddMock() {       //测试方法     service.addMock(mock);     //这里使用的是是hibernate,增加后主键被填充,所以只要判断实体对象的id是否为null即可     Assert.assertTrue("测试addMock方法失败。" mock.getMockId!=null);   }   public static void main(String[] args) {     junit.textui.TestRunner.run(MockServiceTest.class);   } }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号