`
chenjingbo
  • 浏览: 460130 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring-test做数据库操作的单元测试

阅读更多

spring提供了一个做单元测试的方法。我最喜欢的是它的自动事务回滚功能。用起来很爽。

直接看代码

package com.ali.gongyi.model.account;

import junit.framework.Assert;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

import com.ali.gongyi.dao.BaseDao;

/**
 * @author zhenghui 
 * @version 1.0
 * @data 2011-2-11 下午03:22:14
 * 
 */
@RunWith(SpringJUnit4ClassRunner.class) //指定测试用例的运行器 这里是指定了Junit4  
@ContextConfiguration("classpath:applicationContext.xml")  
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true)  
@Transactional    
public class TestUserDao {
	@Autowired
	private BaseDao<User, Long> userDao = null;

	@Test
	@Rollback(true)//上面已经设置defaultRollback=true。这里其实可以不用写了
	public void testModifyUser() {
		User user = userDao.findById(2L);
		System.out.println(user.getId());
		user.setDisplayName("系统管理员4");
		userDao.saveOrUpdate(user);
		Assert.assertEquals(userDao.findById(2L).getDisplayName(), "系统管理员4");
	}
}

 

说明

1  userDao的实现可以是hibernate,也可以是ibatis (这两个我都做了测试,这种方式都是没有问题的)。当然最主要看重的是自动回滚。

2 transactionManager需要自己配置。

分享到:
评论
3 楼 linghy 2013-03-21  
Spring的手册上说:如果只有一个transaction manger,或者即使有多个但是用来测试的那个叫做transactionManager,并且事务自动回滚,可以不要 @TransactionConfiguration。博主把这行去掉试试
2 楼 tanjianna 2013-03-12  
userDao.saveOrUpdate(user);为什么我执行这句了数据库还没更新呢?所以查询出来的userDao.findById(2L).getDisplayName()还是原来的值,而不是"系统管理员4" 求指教
1 楼 bingobird 2011-02-21  
不错,配置还比较方便,不知跨库怎么样

相关推荐

    Spring-test做数据库操作的单元测试2-跨库访问

    这篇博客"Spring-test做数据库操作的单元测试2-跨库访问"探讨了如何利用Spring-test进行数据库操作的测试,尤其是涉及到跨库访问的场景。在企业级应用开发中,常常需要处理多个数据库的情况,例如主从数据库、读写...

    spring-test-3.2.0.RELEASE.jar

    首先,`spring-test`模块的核心目标是简化Spring应用的测试工作,它提供了对JUnit、TestNG等主流测试框架的集成,使得开发者能够便捷地进行单元测试和集成测试。在`3.2.0.RELEASE`这个版本中,Spring Test进一步增强...

    spring-test.zip

    对于涉及数据库操作的应用,Spring Test提供了`@DataJpaTest`和`@Sql`注解,可以方便地执行数据准备和清理,以及针对JPA实体的事务性测试。 6. **测试配置**: 使用`@ContextConfiguration`或`@WebApp...

    spring-boot-test示例程序

    对于数据库测试,可以利用`@DataJpaTest`或`@Sql`注解执行特定的SQL脚本来设置测试数据。`@WithMockUser`注解可以模拟用户身份进行授权测试。 5. **Mockito**: Mocking是单元测试中的一个重要概念,Mockito是一个...

    spring-test项目实例

    spring-test项目实例 1.使用spring-test与junit进行单元测试。 2.包含回滚动作,避免测试数据污染数据库。

    Embedded-database-spring-test:一个库,用于为Spring集成测试创建隔离的嵌入式数据库

    产品特点支持Spring和Spring Boot框架支持的版本是Spring 4.3.0+和Spring Boot 1.4.0+ 与Spring TestContext框架自动集成完全支持上下文缓存与Flyway数据库迁移工具无缝集成只需将@FlywayTest批注放置在测试类或方法...

    利用JUnit和Spring-test对SpringJDBC组件DAO层测试

    如果DAO方法涉及数据库操作,可以考虑使用Spring的`@Transactional`注解,确保测试后数据库状态回滚,避免影响其他测试。 对于SpringJDBC中的Druid数据源,它是一个高效、强大的连接池实现。在测试中,我们可以配置...

    spring-test-3.2.9.zip

    《Spring Test 3.2.9:单元测试与JUnit的深度整合》 在软件开发过程中,单元测试是一项至关重要的任务,它确保了代码的正确性和稳定性。Spring框架提供了Spring Test模块,专门用于支持Spring应用程序的测试,而...

    spring-test

    在Java开发领域,Spring框架无疑是最为广泛使用的轻量级框架之一,而Spring Test则是Spring框架的重要组成部分,它为开发者提供了强大的单元测试和集成测试工具。本文将深入探讨Spring Test的核心概念、功能以及实际...

    spring-context-3.2.0 spring-core-3.2.0 等齐全的Spring jar包

    Spring框架是Java开发中最常用的轻量级开源...无论是开发web应用、处理数据库操作,还是进行单元测试,都能找到相应的支持。3.2.0版本是一个稳定且广泛使用的版本,它引入了一些新的特性和改进,提高了性能和兼容性。

    spring-boot-test_springboot学习笔记

    4. **数据源配置**:在测试中,经常需要模拟数据库操作。Spring Boot通过`@DataJpaTest`或`@Sql`注解可以方便地设置数据源和执行SQL脚本。 二、Spring Boot的单元测试 1. **Mockito**:Spring Boot测试框架常与...

    spring-boot-db-initialization-test:测试用例,显示未初始化数据库以进行测试的错误

    spring-boot-db初始化测试 测试用例,显示未初始化数据库以进行测试的错误 该项目包含一个测试,该测试查询内存中的h2数据库以确保其不为空 $ mvn test ... 2014-10-14 10:10:21.409 WARN 3435 --- [ main] o.s.b.a....

    spring-boot-samples-master

    6. **测试**:"spring-boot-sample-test"提供了单元测试和集成测试的示例,使用Spring Boot的测试支持库,可以方便地进行MockMVC和WebApplicationContext测试。 7. **国际化**:"spring-boot-sample-i18n"解释了...

    spring-boot-test:使用 spring boot 测试代码

    在Spring Boot框架中,`spring-boot-test`模块是专门用于测试Spring Boot应用的工具集,它简化了单元测试和集成测试的过程。这个模块包含了多种测试相关的依赖,如JUnit、Mockito、Spring Test以及Spring Boot的测试...

    spring-mvc开发所有jar包【4.3.4】

    6. **spring-test-4.3.4.RELEASE.jar**:提供了对Spring应用进行单元测试和集成测试的支持,包括TestContext框架、Mock对象和JUnit集成。 7. **jstl-1.2-sources.jar**:JavaServer Pages Standard Tag Library,是...

    spring-5.3.14-dist.zip(spring-framework-5.3.14)

    5. 自动化测试:利用Spring Test和Mockito进行单元测试和集成测试,确保代码质量。 总之,Spring Framework 5.3.14提供了一个强大而全面的平台,用于构建现代Java应用。通过对docs、libs和schema的深入理解,开发者...

    spring-mybatis整合jar包,spring-mybatis整合jar包

    7. **spring-test-4.2.4.RELEASE.jar**:Spring的测试模块,提供了对Spring应用的单元测试和集成测试的支持,可以帮助开发者验证Spring Mybatis的配置和功能是否正确。 整合Spring Mybatis通常涉及以下步骤: 1. ...

    spring-test-demo-1.zip

    `@DataJpaTest` 和 `@AutoConfigureTestDatabase` 可以帮助我们快速建立数据库测试环境。 8. **Integration Test** 对于更复杂的集成测试,可以使用 `@SpringBootTest` 注解,它将启动整个 Spring Boot 应用程序。...

    官方完整包 spring-framework-5.3.7.RELEASE-dist.zip

    - **Spring Test**:包含了测试支持,帮助开发者进行单元测试和集成测试。 4. **5.3.7.RELEASE更新**: - 通常,每个新版本都会修复已知问题,提高性能,并添加新特性和改进。5.3.7.RELEASE可能包含安全更新,...

    spring-test-3.2.7.RELEASE.zip

    其次,db-util是一个专为数据库测试设计的工具,尤其在配合JPA和Hibernate使用时,其价值更为突出。JPA和Hibernate作为流行的ORM框架,极大地简化了数据库操作,但同时也可能引入N+1查询问题。N+1查询是指在一个循环...

Global site tag (gtag.js) - Google Analytics