基于Spring事务的集成测试
一、测试类和配置文件的目录结构
test
bbs.spring.common.test
BaseTransactionalIntegrationTests
applicationContext.xml
bbs.spring.service.test
TopicServiceImplTest
applicationContext-test.xml
二、applicationContext.xml配置
配置数据源、事务和依赖注入,暴露带事务的业务接口。
......
<!-- hibernateTemplate ..................................................... -->
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- transactionManager .................................................... -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- 事务代理工厂bean模板 ................................................. -->
<bean id="baseTransactionProxy" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager" />
<property name="proxyTargetClass" value="true" />
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- 实例化Dao .............................................................. -->
<bean id="topicDao"
class="org.eesite.bbs.hibernate.dao.TopicDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- Transactional proxy for the Application primary business object ..... -->
<bean id="topicServiceTarget"
class="org.eesite.bbs.spring.service.TopicServiceImpl">
<property name="topicDao" ref="topicDao" />
</bean>
<!-- TransactionProxyFactoryBean ........................................... -->
<bean id="topicService" parent="baseTransactionProxy">
<description />
<property name="proxyInterfaces">
<list>
<value>
org.eesite.bbs.spring.service.ITopicService
</value>
</list>
</property>
<property name="target">
<ref bean="topicServiceTarget" />
</property>
</bean>
三、扩展Spring抽象事务测试类
package bbs.spring.common.test;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;
/**
* 扩展Spring抽象事务测试类, 注入hibernateTemplate, 实现getConfigLocations方法
*
* @author zhanjia
*
*/
public abstract class BaseTransactionalIntegrationTests extends
AbstractTransactionalDataSourceSpringContextTests {
private HibernateTemplate hibernateTemplate;
/**
* @return the hibernateTemplate
*/
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
/**
* @param hibernateTemplate
* the hibernateTemplate to set
*/
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
/*
* (non-Javadoc)
*
* @see org.springframework.test.AbstractDependencyInjectionSpringContextTests#getConfigLocations()
*/
@Override
protected String[] getConfigLocations() {
setAutowireMode(AUTOWIRE_BY_NAME);
return new String[] {
"classpath:bbs/spring/common/test/applicationContext.xml",
"classpath:bbs/spring/service/test/applicationContext-test.xml" };
}
}
四、applicationContext-test.xml配置
为测试类注入业务接口和hibernateTemplate.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="topicServiceImplTest"
class="bbs.spring.service.test.TopicServiceImplTest">
<property name="topicService" ref="topicService" />
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
</beans>
五、测试类
package bbs.spring.service.test;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eesite.bbs.hibernate.vo.Sort;
import org.eesite.bbs.hibernate.vo.Topic;
import org.eesite.bbs.hibernate.vo.User;
import org.eesite.bbs.spring.service.ITopicService;
import bbs.spring.common.test.BaseTransactionalIntegrationTests;
/**
* 主题测试类
*
* @author zhanjia
*
*/
public class TopicServiceImplTest extends BaseTransactionalIntegrationTests {
private static final Log log = LogFactory
.getLog(TopicServiceImplTest.class);
private ITopicService topicService;
/**
* @return the topicService
*/
public ITopicService getTopicService() {
return topicService;
}
/**
* @param topicService
* the topicService to set
*/
public void setTopicService(ITopicService topicService) {
this.topicService = topicService;
}
public void testInsertTopic() {
this.deleteFromTables(new String[] { "Topic", "Sort", "User" });
// this.jdbcTemplate.execute("INSERT INTO ...");
Sort sort = new Sort();
sort.setId(new Long(1));
sort.setSortName("分类1");
sort.setDescription("");
User user = new User();
user.setId(new Long(1));
user.setUserName("zhanjia");
Topic topic = new Topic();
topic.setId(new Long(1));
topic.setTopicName("标题名");
topic.setContent("");
topic.setIcon("");
topic.setSort(sort);
topic.setUser(user);
this.getTopicService().insertTopic(topic);
List list = this.getHibernateTemplate().find("from Topic");
assertEquals(1, list.size());
Long count = this.jdbcTemplate.queryForLong("select count(*) from Topic");
assertEquals(1, count.intValue());
}
}
分享到:
相关推荐
2. Spring MVC框架:Spring MVC是基于Spring框架的Web框架,用于开发Web应用程序。它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、...
JDBC集成,事务集成,单元和集成测试。Hibernate集成,Java持久化API集成 深入讲解Java EE服务及技术集成。包括JNDI集成,EJB3.0集成.线程池和任务调度集成。Java消息服务集成,Java Mail集成,远程服务集成。Java...
【第八章】 对ORM的支持 之 8.1 概述 ——跟我学spring3 【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3 【第八章】 对ORM的支持 之 8.3 ...【第十三章】 测试 之 13.3 集成测试 ——跟我学spring3
JDBC集成,事务集成,单元和集成测试。Hibernate集成,Java持久化API集成 深入讲解Java EE服务及技术集成。包括JNDI集成,EJB3.0集成.线程池和任务调度集成。Java消息服务集成,Java Mail集成,远程服务集成。Java...
11.2 实现通用层 11.3 实现积分商城层 12.1 概述 12.2 注解实现Bean依赖注入 12.3 注解实现Bean定义 12.4 基于Java类定义Bean配置元数据 12.5 综合示例-积分商城 13.1 概述 13.2 单元测试 集成测试 ——跟我学spring3
2. Spring MVC框架:Spring MVC是基于Spring框架的Web框架,用于开发Web应用程序。它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、...
第10章:对实际应用中Spring事务管理各种疑难问题进行透彻的剖析,让读者对Spring事务管理不再有云遮雾罩的感觉。 第11章:讲解了如何使用Spring JDBC进行数据访问操作,我们还重点讲述了LOB字段处理、主键产生...
使用基于AOP的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。 (4) spring-context.jar 这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用服务器...
JDBC集成,事务集成,单元和集成测试。Hibernate集成,Java持久化API集成 深入讲解Java EE服务及技术集成。包括JNDI集成,EJB3.0集成.线程池和任务调度集成。Java消息服务集成,Java Mail集成,远程服务集成。Java...
JDBC集成,事务集成,单元和集成测试。Hibernate集成,Java持久化API集成 深入讲解Java EE服务及技术集成。包括JNDI集成,EJB3.0集成.线程池和任务调度集成。Java消息服务集成,Java Mail集成,远程服务集成。Java...
8、Spring集成Junit测试 9、Spring集成web环境 10、Spring JDBCTemplate基本使用 11、SpringAOP简介和快速入门 12、Spring XML方式配置AOP 13、Spring注解方式配置AOP 14、Spring编程式事务控制介绍 15、Spring基于...
使用基于AOP 的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。 外部依赖spring-core, (spring-beans,AOP Alliance, CGLIB,Commons Attributes)。 spring-...
测试框架和工具则协助开发者编写和运行单元测试、集成测试及性能测试,确保软件质量。 版本控制与协作: 通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化...
2. Spring MVC框架:Spring MVC是基于Spring框架的Web框架,用于开发Web应用程序。它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、...
注意 'spring-test.jar' 包含了上个版本 'spring-mock.jar'中的一切,因此如果是单元或集成测试,可以直接取代。 Spring 2.5的 'spring-tx.jar' 取代了 'spring-dao.jar' 和'spring-jca.jar' 文件,表达其对...
Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...
10.5.1 Spring事务管理器的应对 10.5.2 Hibernate+Spring JDBC混合框架的事务管理 10.6 特殊方法成漏网之鱼 10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接泄漏 10.7.1 底层连接资源...