`

基于Spring事务的集成测试

阅读更多

基于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());

    }

}

 

 

 

分享到:
评论

相关推荐

    在Spring Framework中编写MongoDb集成测试的工具套件(高分项目).zip

    2. Spring MVC框架:Spring MVC是基于Spring框架的Web框架,用于开发Web应用程序。它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、...

    精通spring--源代码

    JDBC集成,事务集成,单元和集成测试。Hibernate集成,Java持久化API集成  深入讲解Java EE服务及技术集成。包括JNDI集成,EJB3.0集成.线程池和任务调度集成。Java消息服务集成,Java Mail集成,远程服务集成。Java...

    跟我学spring3(8-13)

    【第八章】 对ORM的支持 之 8.1 概述 ——跟我学spring3 【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3 【第八章】 对ORM的支持 之 8.3 ...【第十三章】 测试 之 13.3 集成测试 ——跟我学spring3

    精通Spring(书签)

    JDBC集成,事务集成,单元和集成测试。Hibernate集成,Java持久化API集成  深入讲解Java EE服务及技术集成。包括JNDI集成,EJB3.0集成.线程池和任务调度集成。Java消息服务集成,Java Mail集成,远程服务集成。Java...

    跟我学spring3(8-13).pdf

    11.2 实现通用层 11.3 实现积分商城层 12.1 概述 12.2 注解实现Bean依赖注入 12.3 注解实现Bean定义 12.4 基于Java类定义Bean配置元数据 12.5 综合示例-积分商城 13.1 概述 13.2 单元测试 集成测试 ——跟我学spring3

    用于与Spring Boot集成的MyBatis工具包(高分项目).zip

    2. Spring MVC框架:Spring MVC是基于Spring框架的Web框架,用于开发Web应用程序。它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、...

    Spring+3.x企业应用开发实战光盘源码(全)

     第10章:对实际应用中Spring事务管理各种疑难问题进行透彻的剖析,让读者对Spring事务管理不再有云遮雾罩的感觉。  第11章:讲解了如何使用Spring JDBC进行数据访问操作,我们还重点讲述了LOB字段处理、主键产生...

    spring jar 包详解

    使用基于AOP的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。 (4) spring-context.jar 这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ...

    Spring 2.0 开发参考手册

    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. 在应用...

    Spring-Reference_zh_CN(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. 在应用服务器...

    精通Spring(书签版)

    JDBC集成,事务集成,单元和集成测试。Hibernate集成,Java持久化API集成  深入讲解Java EE服务及技术集成。包括JNDI集成,EJB3.0集成.线程池和任务调度集成。Java消息服务集成,Java Mail集成,远程服务集成。Java...

    精通Spring (书签版)

    JDBC集成,事务集成,单元和集成测试。Hibernate集成,Java持久化API集成  深入讲解Java EE服务及技术集成。包括JNDI集成,EJB3.0集成.线程池和任务调度集成。Java消息服务集成,Java Mail集成,远程服务集成。Java...

    SSM框架教程Spring+SpringMVC+MyBatis全覆盖_Java热门框架视频教程

    8、Spring集成Junit测试 9、Spring集成web环境 10、Spring JDBCTemplate基本使用 11、SpringAOP简介和快速入门 12、Spring XML方式配置AOP 13、Spring注解方式配置AOP 14、Spring编程式事务控制介绍 15、Spring基于...

    spring4.3.9相关jar包

    使用基于AOP 的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。 外部依赖spring-core, (spring-beans,AOP Alliance, CGLIB,Commons Attributes)。 spring-...

    基于spring boot搭建的web基础框架.zip

    测试框架和工具则协助开发者编写和运行单元测试、集成测试及性能测试,确保软件质量。 版本控制与协作: 通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化...

    spring-boot 集成geotools工具包(高分项目).zip

    2. Spring MVC框架:Spring MVC是基于Spring框架的Web框架,用于开发Web应用程序。它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    注意 'spring-test.jar' 包含了上个版本 'spring-mock.jar'中的一切,因此如果是单元或集成测试,可以直接取代。 Spring 2.5的 'spring-tx.jar' 取代了 'spring-dao.jar' 和'spring-jca.jar' 文件,表达其对...

    spring3.0jar包

    Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 所有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. 在应用...

    Spring.3.x企业应用开发实战(完整版).part2

    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 底层连接资源...

Global site tag (gtag.js) - Google Analytics