-
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个答案 按时间排序 按投票排序
-
我大致理解你的意思是希望对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 Annotations2014年4月24日 00:24
相关推荐
Spring框架为了更好地支持单元测试,不仅为JUnit提供了相应的支持,同时也为TestNG这样的测试框架提供了集成接口类。通过Spring和TestNG的结合,开发者能够在编写单元测试时更加方便地利用Spring的依赖注入特性。 ...
`spring-test.zip`文件包含的是关于Spring测试的相关代码示例,这对于理解和掌握Spring框架的测试支持至关重要。Spring Test模块提供了集成测试的工具,使得开发者能够方便地对Spring应用进行单元测试和集成测试。 ...
首先,`spring-test`模块的核心目标是简化Spring应用的测试工作,它提供了对JUnit、TestNG等主流测试框架的集成,使得开发者能够便捷地进行单元测试和集成测试。在`3.2.0.RELEASE`这个版本中,Spring Test进一步增强...
在本文中,我们将深入探讨...通过这个"spring_test"测试代码,你可以学习到Spring框架的基本使用,包括DI和AOP的实践,以及如何编写和组织Spring MVC应用的测试代码。不断探索和实践,你将逐步掌握Spring的强大功能。
- **Test**:提供了对测试的支持,包括JUnit和TestNG的集成。 **2. 依赖注入(Dependency Injection,DI)** DI是Spring的核心特性之一,它允许我们解耦组件间的依赖关系,将对象的创建和管理交给Spring容器。通过...
它可以与 JUnit、TestNG 等测试框架结合使用,为 Spring 应用提供方便的测试支持。 **文件结构分析** 在“SpringProject-Spring”这个压缩包中,可能包含以下文件和目录: - `src/main/java`:源代码目录,按照包...
6. **spring-test-4.3.13.RELEASE.jar**:这个模块提供了编写和执行Spring应用测试的工具,支持JUnit和TestNG,方便进行单元测试和集成测试。 7. **spring-orm-4.3.13.RELEASE.jar**:提供了对ORM(Object-...
6. **Spring Test**:支持单元测试和集成测试,可以与JUnit、TestNG等测试框架结合使用。 7. **Spring Batch**:用于执行批量处理任务,支持读取、处理和写入大量数据。 8. **Spring Integration**:提供企业级...
3. **TestNG集成**: 虽然Junit是默认的测试框架,但`spring-test`也支持TestNG,一个功能更丰富的测试框架,提供了更多高级特性,如并行测试执行。 4. **Web应用程序测试**: Spring Test模块包含`MockMvc`类,用于...
在Spring框架中,还有Spring Test模块,用于单元测试和集成测试,提供了对JUnit和TestNG的支持,使得测试更加便捷。Spring Boot则是一个用于简化Spring应用初始搭建以及开发过程的工具,通过默认设置,可以让开发者...
8. **集成测试**:Spring Test模块提供了对单元测试和集成测试的强大支持,包括Mock对象、TestNG集成等。 9. **Spring Boot**:虽然不在4.x版本内,但与之紧密相关。Spring Boot简化了Spring应用的初始搭建和配置,...
Spring框架的诞生旨在解决J2EE应用程序开发中的复杂性,尤其是针对EJB(Enterprise JavaBeans)存在的学习成本高、开发效率低和资源消耗大的问题。Spring的目标是简化JAVA EE开发,提供一个统一且高效的构造整个应用...
5. **测试**:提供了支持单元测试和集成测试的工具,如 Spring Test 和 Spring TestNG 模块。 6. **工具**:Spring 工具包,用于 Eclipse 或其他 IDE 插件,方便开发。 7. **模块文档**:包含详细的 API 文档、...
Spring同样支持TestNG,只需添加对应的依赖并使用`@SpringBootTest`注解。 10. **断言与验证** 在测试中,断言是验证预期结果的关键。Spring提供了`assertThat`方法,可以与各种匹配器一起使用,如`isEqualTo`,`...
Spring测试模块提供了全面的测试支持,包括对Spring应用程序上下文的加载、AOP代理的处理、事务管理以及对各种测试框架(如JUnit、TestNG)的集成。`org.springframework.test-3.0.2.RELEASE.jar`正是这个模块的实现...
8. **Spring Test**: `spring-test.jar`支持单元测试和集成测试,可以配合JUnit或TestNG进行Spring应用程序的测试。 9. **Spring Aspects**: 如果你使用AspectJ进行AOP编程,那么`spring-aspects.jar`会提供与...
6. **Spring Test**:这个模块提供了测试Spring应用程序的支持,包括JUnit和TestNG的集成,以及模拟对象框架,使得单元测试和集成测试更加方便。 7. **Spring Boot**:虽然Spring Boot不属于Spring3.2.0的范畴,但...
Spring Test模块为Spring应用提供了测试支持,包括JUnit和TestNG的集成,以及对Spring应用上下文的加载和管理,方便进行单元测试和集成测试。 这些Jar包构成了Spring MVC与Hibernate整合的基础,使得开发者能够...
Spring框架是Java开发中不可或缺的一部分,它以其模块化、易用性和灵活性而备受推崇。本教程将深入探讨Spring的核心概念和重要特性,帮助你更好地理解和应用这个强大的框架。 1. **Spring概述** - Spring是一个...