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

简述 Spring TestContext Framework

阅读更多
使用Spring TestContext Framework对程序进行单元测试有两种方式,一种是测试类继承AbstractJUnit4SpringContextTests或继承AbstractTransactionalJUnit4SpringContextTests,并且使用@ContextConfiguration注解来指定配置文件的位置,如果不置顶配置文件的位置的话,它会默认测试目标类的全限名加上"-context.xml"(eg: com.sch.services.UserService默认的配置文件为:classpath:com/sch/services/UserService-context.xml).
先来看一下AbstractJUnit4SpringContextTests和AbstractTransactionalJUnit4SpringContextTests的原型,了解两者的区别:
AbstractJUnit4SpringContextTests:
@RunWith(SpringJUnit4ClassRunner.class) //指定测试用例运行器
 @TestExecutionListeners(                 // 注册了两个TestExecutionListener监听器
  { DependencyInjectionTestExecutionListener.class,
    DirtiesContextTestExecutionListener.class })
 public class AbstractJUnit4SpringContextTests implements ApplicationContextAware {
  	…
  }

AbstractTransactionalJUnit4SpringContextTests:
// 注册测试用例事务管理的监听器
  @TestExecutionListeners( { TransactionalTestExecutionListener.class })
  @Transactional    // 使测试用例的所有方法都将工作于事务环境下
  public class AbstractTransactionalJUnit4SpringContextTests 
  extends AbstractJUnit4SpringContextTests {
    …
  }

可以看出AbstractTransactionalJUnit4SpringContextTests 是继承于AbstractJUnit4SpringContextTests 并增加了一个TransactionalTestExecutionListener监听器,可见AbstractTransactionalJUnit4SpringContextTests 增加了测试类对事物的控制,可见测试类可以使用注解也可以使用继承抽象类。

接下来看一下3个监听器的作用:

DependencyInjectionTestExecutionListener提供了依赖注入的功能,它负责解析测试类中的@Autowried和@Resource注解

DirtiesContextTestExecutionListener只要的作用是处理测试类中的上下文遭到破坏时,重新注册上下文,即在测试方法上使用@DirtiesContext启用;当测试方法被@DirtiesContext注解修饰时,当测试方法结束的时候,Spring TestContext会刷新Spring的上下文(就是重新创建ApplicationContext)。

TransactionalTestExecutionListener主要负责解析和事物操作有关的注解,例如:@Transaction、@BeforeTransaction、@AfterTransaction、@NotTransactional 以及 @Rollback。

下面来看一下测试相关注解的简单说明:
@TransactionConfiguration使用在类级别上,里面有两个属性,transactionManager 指定事物管理器的名字,默认的名称为:transactionManager;defaultRollback 配置全局默认的事务回滚,默认为:false。

@BeforeTransaction和@AfterTransaction可见是在需要事物的测试方法执行前后调用,和JUnit4中@Before、@After注解类型,当时前者会忽略声明了@NotTransactional注解的测试方法。

@NotTransactional修饰那些不需要事物的测试方法。

@Rollback可以改变测试方法的回滚方式,例如@Rollback(true)可以是测试方法的事物设置为执行完后事物马上回滚。
还有一些注解的使用方法可以参考Spring Reference。
分享到:
评论

相关推荐

    使用 Spring 2.5 TestContext 测试框架

    在Spring框架中,TestContext模块为开发者提供了强大的测试支持,特别是在Spring 2.5版本中,这个测试框架进一步增强了测试的便利性和可扩展性。它允许我们以声明式的方式配置和管理测试环境,包括bean的初始化、...

    Spring TestContext

    Spring TestContext Framework是spring-test模块中提供的一个测试框架,能够用于单元测试和集成测试。

    spring-framework-4.3.6.RELEASE-dist.zip

    5. **Test**:Spring Test模块和Spring TestContext Framework支持对Spring应用进行单元测试和集成测试,提供了方便的测试抽象和集成环境。 在"spring-framework-4.3.6.RELEASE-dist"中,开发者会找到以下资源: -...

    spring-framework-bom源码

    源码中包含了Spring TestContext框架,它允许在测试环境中轻松地注入和配置依赖。 8. **Spring Boot**:虽然Spring Framework BOM不直接包含Spring Boot的源码,但理解Spring Framework有助于理解Spring Boot的依赖...

    spring-test-junit5, JUnit ( a )的spring TestContext框架扩展( a ).zip

    spring-test-junit5, JUnit ( a )的spring TestContext框架扩展( a ) spring 5测试支持这个项目作为 5的正式 Prototype,在 spring TestContext框架测试支持,并与 SPR-13575结合到 Spring Framework 。 因此,在...

    spring-framework-4.0.3.RELEASE

    此外,Spring TestContext Framework可以自动配置Spring容器,使得集成测试变得更加便捷。 六、与其他技术的兼容性 Spring 4.0.3.RELEASE对Java EE 7有良好的支持,包括WebSocket、JAX-RS等新特性。同时,它与众多...

    spring-framework-2.0

    8. **测试支持**:Spring 2.0提供了更好的测试工具和框架,如`Spring TestContext Framework`,可以进行单元测试和集成测试,支持模拟对象和依赖注入到测试类中。 9. **Web Flow**:Spring Web Flow是Spring 2.0...

    spring-framework-4.1.6.RELEASE

    提供了全面的测试支持,包括Spring TestContext框架、Mockito集成和Web应用测试。开发者可以轻松创建单元测试和集成测试,确保代码质量。 8. **性能和兼容性**: Spring 4.1.6对性能进行了优化,同时保持与JDK 6...

    spring-framework-reference

    6. **单元测试**:Spring提供了强大的测试支持,包括Mock对象、TestNG和JUnit集成,以及Spring TestContext Framework,帮助开发者编写可测试的代码。 7. **Spring Boot**:尽管不在原书范围内,但Spring Boot是...

    spring-framework-5.2.25.RELEASE.zip

    最后,Spring框架的源码中还包括了大量用于测试的类和接口,如`TestContext`框架,它提供了集成测试的支持,包括对Spring应用上下文的加载和销毁,以及对依赖注入的模拟。 综上所述,Spring Framework 5.2.25....

    spring-framework-2.5.6

    为了方便单元测试和集成测试,Spring提供了TestContext框架,它支持Spring应用上下文的加载和销毁,以及对Spring beans的依赖注入。配合Mockito等工具,可以进行深度的、隔离的测试。 总结,Spring Framework 2.5.6...

    spring-framework-3.0.2-dependencies

    Spring 提供了单元测试和集成测试的支持,包括Spring TestContext Framework,用于加载Spring应用上下文并进行测试。 10. **Spring Aspects** Spring Aspects 提供了对AspectJ的完全支持,包括编译时和运行时织入...

    spring-framework-4.3.0.RELEASE(源码已经成功编译)

    《Spring Framework 4.3.0.RELEASE源码解析与深度探索》 Spring Framework作为Java领域最广泛应用的轻量级框架之一,其4.3.0.RELEASE版本的发布为开发者提供了更稳定、高效的服务。这个版本的成功编译,意味着我们...

    spring源码spring-framework-4.3.2.RELEASE

    Spring提供了丰富的测试工具,如`MockMvc`用于模拟MVC请求,`TestContext`框架支持集成测试。源码中的`org.springframework.test`包提供了测试相关的API,帮助开发者编写单元测试和集成测试。 五、其他特性 1. **...

    spring-framework-2.0-m1-with-dependencies.zip

    《Spring Framework 2.0:历史、核心概念与应用》 Spring Framework,作为Java领域最为广泛应用的开源框架之一,自2003年发布以来,为无数开发者提供了强大的支持。在2005年,Spring Framework 2.0的发布带来了许多...

    最新版spring-framework-4.3.8.RELEASE-dist完整包

    测试模块支持单元测试和集成测试,包含Spring TestContext框架,使得测试Spring应用变得更加简单。4.3.8.RELEASE版本可能会有改进的测试支持,比如更好的模拟对象支持和对测试断言的增强。 总的来说,"spring-...

    spring-framework-4.2.7.RELEASE-dist

    4. **Test**:测试模块支持单元测试和集成测试,提供了一套方便的测试工具,如 Spring TestContext Framework 和 Mock Objects。 5. **Spring AOP**:这个模块提供了 AOP 功能,允许开发者定义方法拦截器和切入点...

    spring-framework-3.0.5.RELEASE-src

    在源代码中,我们可以看到Spring TestContext Framework如何简化测试环境的搭建和清理。 总的来说,Spring框架3.0.5.RELEASE的源代码不仅展示了其强大的功能,也揭示了其优雅的设计理念。通过对源代码的学习,...

    spring-framework-2.5.6jar包

    综上所述,"spring-framework-2.5.6jar包"是一个包含大量核心特性和功能的老版本Spring框架。尽管现代开发更多地使用更高级的版本,但理解这个早期版本可以帮助我们了解Spring框架的发展历程,以及其核心设计理念。...

Global site tag (gtag.js) - Google Analytics