Spring2.5 下单元测试

本文提供了一套实用的Spring 2.5集成测试方法,包括配置数据源、事务管理、实现DAO测试类等步骤,旨在帮助开发者高效地进行单元测试,确保代码质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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、付费专栏及课程。

余额充值