0 0

SpringTest+TestNG框架关于事务控制的问题10

我目前正在使用SpringTest+TestNG进行web系统接口测试(针对Service层的测试),目前碰到一个很棘手的问题想向各位咨询!我在测试一个Service类中的新增记录的操作,此操作最终会将记录插入到数据库,为了保证不生成脏数据,于是想使用@Transactional来管理测试方法,确保在执行此测试方法后,新增的记录被回滚,但是在使用过程中发现我无法获取被测系统的事务管理bean!详细情况是这样的:
测试代码在/src/test/java下,被测service在/src/main/java下,被测service中关于数据持久化的操作全部是引用一个公共的Jar包来完成,此包下有一个spring配置文件对DataSource、transactionManager等Bean进行定义,那么我在我的测试代码中用@ContextConfiguration注解如何能够加载此文件呢?如果不加载到此文件我不知道该如何才能获取到该配置文件中的transactionManager,那么@Transactional注解将不起作用!哪位大侠能帮我?
 
2014年4月23日 21:28

1个答案 按时间排序 按投票排序

0 0

    我大致理解你的意思是希望对service测试之后,不要将测试数据入库?
如果是这样,spring test默认就不会在test context环境里提交事务。
    首先,你要知道即使spring的配置文件是存在于jar包中,但是只要这个jar包被包含在运行上下文的classpath中,那么它就能够被加载。
    接下来说说如何使用spring test来控制对事务的回滚,最简单的做法是继承AbstractTransactionalTestNGSpringContextTests类(Junit也有类似的类),比如下面这样:

@ContextConfiguration("classpath:")// 加载spring配置文件路径
public class ServiceTest extends AbstractTransactionalTestNGSpringContextTests {
    
    @Resource
    private Service service;

    @Test
    public void test() {
        // service#doSomething
    }
}

    在上面这段示例代码中,test方法中的测试数据不会真的提交数据库,他将在test方法执行完毕后进行回滚。
    如果你希望控制测试代码的事务提交,可以通过一些annotation来完成。
    比如改成下面这样
@ContextConfiguration("classpath:")// 加载spring配置文件路径
@TransactionConfiguration(transactionManager = "txMgr", defaultRollback = false)
public class ServiceTest {
    
    @Rollback(false)
    @Test
    public void test() {
        // ...
    }
}

    这段代码意思很明显,设置事务管理器,设置默认回滚为false,此时执行test方法就会将事务提交,如果希望测试方法执行完后回滚,修改@Rollback(false)为true即可。

更多的信息,你可以参考spring-framework-reference
[url=http://docs.spring.io/spring/docs/4.0.3.RELEASE/spring-framework-reference/html/testing.html#testcontext-tx]spring test Transaction management
[/url]
Spring Testing Annotations

2014年4月24日 00:24

相关推荐

    testNG集成spring

    Spring框架为了更好地支持单元测试,不仅为JUnit提供了相应的支持,同时也为TestNG这样的测试框架提供了集成接口类。通过Spring和TestNG的结合,开发者能够在编写单元测试时更加方便地利用Spring的依赖注入特性。 ...

    spring-test.zip

    `spring-test.zip`文件包含的是关于Spring测试的相关代码示例,这对于理解和掌握Spring框架的测试支持至关重要。Spring Test模块提供了集成测试的工具,使得开发者能够方便地对Spring应用进行单元测试和集成测试。 ...

    spring-test-3.2.0.RELEASE.jar

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

    spring_test测试代码

    在本文中,我们将深入探讨...通过这个"spring_test"测试代码,你可以学习到Spring框架的基本使用,包括DI和AOP的实践,以及如何编写和组织Spring MVC应用的测试代码。不断探索和实践,你将逐步掌握Spring的强大功能。

    Spring框架基础压缩包

    - **Test**:提供了对测试的支持,包括JUnit和TestNG的集成。 **2. 依赖注入(Dependency Injection,DI)** DI是Spring的核心特性之一,它允许我们解耦组件间的依赖关系,将对象的创建和管理交给Spring容器。通过...

    SpringProject-Spring框架代码

    它可以与 JUnit、TestNG 等测试框架结合使用,为 Spring 应用提供方便的测试支持。 **文件结构分析** 在“SpringProject-Spring”这个压缩包中,可能包含以下文件和目录: - `src/main/java`:源代码目录,按照包...

    Spring+SpringMVC JAR包

    6. **spring-test-4.3.13.RELEASE.jar**:这个模块提供了编写和执行Spring应用测试的工具,支持JUnit和TestNG,方便进行单元测试和集成测试。 7. **spring-orm-4.3.13.RELEASE.jar**:提供了对ORM(Object-...

    spring 轻量级Javaweb开发框架

    6. **Spring Test**:支持单元测试和集成测试,可以与JUnit、TestNG等测试框架结合使用。 7. **Spring Batch**:用于执行批量处理任务,支持读取、处理和写入大量数据。 8. **Spring Integration**:提供企业级...

    spring整合单元测试Junit开发包

    3. **TestNG集成**: 虽然Junit是默认的测试框架,但`spring-test`也支持TestNG,一个功能更丰富的测试框架,提供了更多高级特性,如并行测试执行。 4. **Web应用程序测试**: Spring Test模块包含`MockMvc`类,用于...

    Spring框架jar包.rar

    在Spring框架中,还有Spring Test模块,用于单元测试和集成测试,提供了对JUnit和TestNG的支持,使得测试更加便捷。Spring Boot则是一个用于简化Spring应用初始搭建以及开发过程的工具,通过默认设置,可以让开发者...

    Spring4.x++企业应用开发实战

    8. **集成测试**:Spring Test模块提供了对单元测试和集成测试的强大支持,包括Mock对象、TestNG集成等。 9. **Spring Boot**:虽然不在4.x版本内,但与之紧密相关。Spring Boot简化了Spring应用的初始搭建和配置,...

    Spring框架系列(1) - Spring和Spring框架组成.doc

    Spring框架的诞生旨在解决J2EE应用程序开发中的复杂性,尤其是针对EJB(Enterprise JavaBeans)存在的学习成本高、开发效率低和资源消耗大的问题。Spring的目标是简化JAVA EE开发,提供一个统一且高效的构造整个应用...

    spring框架的包

    5. **测试**:提供了支持单元测试和集成测试的工具,如 Spring Test 和 Spring TestNG 模块。 6. **工具**:Spring 工具包,用于 Eclipse 或其他 IDE 插件,方便开发。 7. **模块文档**:包含详细的 API 文档、...

    SpringTest:编写Spring示例代码

    Spring同样支持TestNG,只需添加对应的依赖并使用`@SpringBootTest`注解。 10. **断言与验证** 在测试中,断言是验证预期结果的关键。Spring提供了`assertThat`方法,可以与各种匹配器一起使用,如`isEqualTo`,`...

    org.springframework.test-3.0.2.RELEASE.jar

    Spring测试模块提供了全面的测试支持,包括对Spring应用程序上下文的加载、AOP代理的处理、事务管理以及对各种测试框架(如JUnit、TestNG)的集成。`org.springframework.test-3.0.2.RELEASE.jar`正是这个模块的实现...

    Spring框架项目所依赖的所有JAR

    8. **Spring Test**: `spring-test.jar`支持单元测试和集成测试,可以配合JUnit或TestNG进行Spring应用程序的测试。 9. **Spring Aspects**: 如果你使用AspectJ进行AOP编程,那么`spring-aspects.jar`会提供与...

    Spring3.2.0 框架jar包及Spring依赖jar包

    6. **Spring Test**:这个模块提供了测试Spring应用程序的支持,包括JUnit和TestNG的集成,以及模拟对象框架,使得单元测试和集成测试更加方便。 7. **Spring Boot**:虽然Spring Boot不属于Spring3.2.0的范畴,但...

    spring mvc hibernate jar包

    Spring Test模块为Spring应用提供了测试支持,包括JUnit和TestNG的集成,以及对Spring应用上下文的加载和管理,方便进行单元测试和集成测试。 这些Jar包构成了Spring MVC与Hibernate整合的基础,使得开发者能够...

    spring教案

    Spring框架是Java开发中不可或缺的一部分,它以其模块化、易用性和灵活性而备受推崇。本教程将深入探讨Spring的核心概念和重要特性,帮助你更好地理解和应用这个强大的框架。 1. **Spring概述** - Spring是一个...

Global site tag (gtag.js) - Google Analytics