Web工程中spring+ibatis的单元测试
作者:网络转载 发布时间:[ 2015/3/26 14:31:46 ] 推荐标签:单元测试 软件测试 应用程序
为了保证代码的正确,软件的质量,单元测试几乎是每个程序员都要面临的工作了;而开发中大部分的工作都涉及数据库的操作,也是平时经常可以看到的DAO了;由于是对数据库的操作,必然有事务的问题了;如果是启动应用服务器,然后再模拟一个请求来验证Dao中的代码写得是否正确的话,那么面临的问题 首先是 速度的问题也是效率的问题,如果你的应用很大的话那么但tomcat的启动花费了一分钟左右的时间,如果用的服务器是weblogic的话更加不用说了 其实是问题的主次问题,我们现在要做的正事是测试Dao 但是如果放到服务器里面测试的话 可能有些问题不是dao的问题了,但是我们必须解决,这样做 显然很多时候有点本末倒置了 ;因此我采用的方法是利用spring+ibatis+junit在本地测试的方法 大体步骤如下
一 建立一个测试的基类 AbstractTestCase 代码如下
package com.skywin.workorder.dao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import junit.framework.TestCase;
public abstract class AbstractTestCase extends TestCase {
protected ApplicationContext ctx = null;
public AbstractTestCase() {
// 测试工作流
//ctx = new ClassPathXmlApplicationContext("testApplicationContext.xml");
// 测试DAO
ctx =new ClassPathXmlApplicationContext(
"_applicationContext-iBatis.xml");
}
}
二 第一步中文件 _applicationContext-iBatis.xml 的路径为 工程名字conf\_applicationContext-iBatis.xml ,是spring的配置文件进行事务属性等相关配置 代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--
<import resource="classpath:_applicationContext-authrization.xml"/>
-->
<import resource="classpath:workorder-module.xml"/>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>jdbc-template.properties</value>
</list>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="initialSize" value="${jdbc.initialSize}"/>
<property name="maxActive" value="${jdbc.maxActive}"/>
</bean>
<!--
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@10.244.112.130:41521:gmcctest"/>
<property name="username" value="gmcc"/>
<property name="password" value="gmcc"/>
<property name="initialSize" value="1"/>
<property name="maxActive" value="15"/>
</bean>
-->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="sqlmap-config-template.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="baseTxService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager" ref="transactionManager"/>
<property name="proxyTargetClass" value="true"/>
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<!-- instead of select .. for update
<prop key="global*">
PROPAGATION_REQUIRED,ISOLATION_SERIALIZABLE
</prop>
-->
</props>
</property>
</bean>
</beans>
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11