使用spring机制进行单元测试
来源:互联网 发布:网络语029什么意思 编辑:程序博客网 时间:2024/06/05 18:01
在接触Spring的测试机制之前,一直是直接使用JUnit进行集成测试。在spring框架中,直接使用JUnit进行测试时,存在以下几点问题:
1. 在获取需要测试的Bean时,需要直接使用ApplicationContext的getBean()方法从Spirng容器中获取需要测试的目标Bean;
2. 甚至在获取Spring的配置文件时,通过配置文件的绝对路径来寻找applicationContext.xml文件。
Spring的测试包为spring-test.jar文件(某些版本的测试包可能在spring-mock.jar下)。Spring的测试机制是基于JUnit的扩展,在org.springframework.test包下,可以看到6个从TestCase基础上扩展出来的抽象类,分别是:
AbstractDependencyInjectionSpringContextTests的使用场景:测试初期,需要大量数据,使用该类进行测试,可以save数据到数据库中。
AbstractTransactionalSpringContextTests的使用场景:在系统开发的中后期,需要进行的测试,以各种负责的业务操作为主了,此时可能需要一些可以保护数据库现场的测试功能, 该类提供了一套数据库自动回滚的功能,执行了业务逻辑,但是对数据库没有影响。从而不必每次测试完成后都重新恢复数据库的操作。
1. 在获取需要测试的Bean时,需要直接使用ApplicationContext的getBean()方法从Spirng容器中获取需要测试的目标Bean;
2. 甚至在获取Spring的配置文件时,通过配置文件的绝对路径来寻找applicationContext.xml文件。
3. 直接使用JUnit进行测试容易破坏数据库的现有结构,例如主键ID自增长的情况以及由于主键重复造成的同样的数据插入第二次时的异常等。
Spring提供了一套基于JUnit扩展的测试机制,可以方便地实现Bean的获取、配置文件的获取、保护数据库现场、同一事务下访问数据库以检验业务操作的正确性等特性。
使用Spring的测试机制:Spring的测试包为spring-test.jar文件(某些版本的测试包可能在spring-mock.jar下)。Spring的测试机制是基于JUnit的扩展,在org.springframework.test包下,可以看到6个从TestCase基础上扩展出来的抽象类,分别是:
- ConditionalTestCase(可以有选择地关闭掉一些测试方法,不让他们在测试用例中执行,而无需将这些方法注释掉)
- AbstractSpringContextTests(运行多个测试用例和测试方法时,Spring上下文只需创建一次)
- AbstractSingleSpringContextTests(方便手工指定Spring配置文件、手工设定Spring容器是否需要重新加载)
- AbstractDependencyInjectionSpringContextTests(自动装配、依赖检查、自动注入)
- AbstractTransactionalSpringContextTests(自动恢复数据库现场即自动回滚)
- AbstractTransactionalDataSourceSpringContextTests(通过JDBC访问数据库,检测数据操作正确性)
AbstractDependencyInjectionSpringContextTests的使用场景:测试初期,需要大量数据,使用该类进行测试,可以save数据到数据库中。
AbstractTransactionalSpringContextTests的使用场景:在系统开发的中后期,需要进行的测试,以各种负责的业务操作为主了,此时可能需要一些可以保护数据库现场的测试功能, 该类提供了一套数据库自动回滚的功能,执行了业务逻辑,但是对数据库没有影响。从而不必每次测试完成后都重新恢复数据库的操作。
0 0
- 使用spring机制进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用Spring进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- 使用 Spring 进行单元测试
- c语言libcurl 使用实例get/post方法+c语言字符串处理
- JBoss主要版本下载链接一览
- Linus常用的快捷键与shell常用通配符
- hadoop集群配置datanode无法启动的原因
- Cocos2d-x从入门到精通第七课《内存管理》
- 使用spring机制进行单元测试
- Xcode程序入口
- ZOJ2110 骨头的诱惑
- VC使用libcurl模拟登录CSDN并自动评论资源以获取积分
- erlang学习理解笔记(1)
- Eclipse上GIT插件EGIT使用手册
- HTML+CSS大风车及十字架的实现
- leetcode 100 Same Tree(难易度:Easy)
- poj3687 Labeling Balls 拓扑排序