Spring2.5 下单元测试

Spring2.5下单元测试(保证玩转)
 
网上看到不少Spring集成测试的文章,都是抄来抄去,看起来很高深,但是你按照他说的玩不转,缺乏实用性。
不玩虚的,我给篇实用的,Spring的测试框架好处就不说了,也没啥理论。呵呵!
 
测试目标:测试不依赖现有的数据库数据,测试不破坏现有的数据。
 
环境:
MySQL5(表为INNDB引擎)
Java 1.5
Spring 2.5.4
 
假设你已经具备上上述的环境,假设你写好了DAO实现,假设现在要测试DAO。
 
那么,你需要做的仅仅是:
1、配置好数据源。
    <!-- 配置系统的数据源 -->
     < bean id ="dataSource" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method ="close" >
         < property name ="driverClassName" >
             < value >${jdbc.driver} </ value >
         </ property >
         < property name ="url" >
             < value >${jdbc.url} </ value >
         </ property >
         < property name ="username" >
             < value >${jdbc.username} </ value >
         </ property >
         < property name ="password" >
             < value >${jdbc.password} </ value >
         </ property >
     </ bean >
 
2、配置好事务管理类。
     < bean id ="transactionManager"
           class ="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
         < property name ="dataSource" ref ="dataSource" />
     </ bean >
 
3、配置好DAO的Bean。
 
   < bean id ="someDAO" class ="org.lavasoft.test.SomeDAOImpl" />
 
4、写DAO的测试类,并继承AbstractTransactionalDataSourceSpringContextTests类,并且注入这个DAO实现,并写getConfigLocations()方法,然后写每个要测试的方法。
 
 
public class TestSomeDAO extends AbstractTransactionalDataSourceSpringContextTests {
     //注入DAO
     private SomeDAO someDAO;

     public void setSomeDAO(SomeDAO someDAO) {
         this.someDAO = someDAO;
    }
  
     //加载资源配置文件
    @Override
     public String[] getConfigLocations() {
         return new String[]{ "ApplicationContext.xml", "ApplicationContext_xxx.xml"};
    }

     public void testSave() {
        Some some = new Some();
        some.setId(1L);
        some.setname( "x");
        someDAO.saveSome(some);
        String sql = "select count(*) from t_some t where t.id=1";
         int row = (Integer) jdbcTemplate.queryForObject(sql, Integer. class);
        assertEquals(1, row);
    }

     public void testFindById() {
        Some some = someDAO.findSomeById(1L);
        System.out.println(some.getCode() + "  " + some.getSomeKind());
        assertNotNull(some);
    }

     public void testDeleteById() {
        someDAO.deleteSomeById(1L);
        String sql = "select count(*) from t_some t where t.code = 1";
         int row = (Integer) jdbcTemplate.queryForObject(sql, Integer. class);
        assertEquals(0, row);
    }

}
 
经过以上四个步骤,你就实现了测试的目标,换做Service也一样行。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值