使用Spring进行单元测试(下)

发表于:2013-6-07 10:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:赵才文    来源:51Testing软件测试网采编

  执行测试,我们将看到测试成功。

  图 4. 测试成功

  搜索数据库对应的表,我们看到里面没有数据,说明自动事务起作用了。

  基本原理

  Spring test framework 主要位于 org.Springframework.test.context 包中,主要包括下面几个类:

  图 5. Spring 测试框架类图

  ● TestContextManager:主要的入口类,提供 TestContext 实例的管理,负责根据各种事件来通知测试监听器

  ● TestContext:实体类,提供访问 Spring applicatoin context 的能力,并负责缓存 applicationContext

  ● TestExecutionListener:测试监听器,提供依赖注入、applicationContext 缓存和事务管理等能力

  ● ContextLoader:负责根据配置加载 Spring 的 bean 定义,以构建 applicationContext 实例对象

  ● SmartContextLoader:Spring 3.1 引入的新加载方法,支持按照 profile 加载

  Spring 通过 AOP hook 了测试类的实例创建、beforeClass、before、after、afterClass 等事件入口,执行顺序主要如下:

  图 6. Spring 测试框架执行序列图

  ● 测试执行者开始执行测试类,这个时候 Spring 获取消息,自动创建 TestContextManager 实例

  ● TestContextManager 会创建 TestContext,以记录当前测试的上下文信息,TestContext 则通过 ContextLoader 来获取 Spring ApplicationContext 实例

  ● 当测试执行者开始执行测试类的 BeforeClass、Before、After、AfterClass 的时候,TestContextManager 将截获事件,发通知给对应的 TestExecutionListener

  总结

  根据上面的例子和介绍,我们可以看到,Spring 测试框架的主要特点如下:

  ● 完美的支持了 Junit4(提供特别的 SpringJunit4ClassRunner),比较好的支持了 TestNG

  ● 在支持原有单元测试能力的基础上,通过各种监听器,支持了测试类的依赖注入、对 Spring applicationContext 的访问以及事务管理能力,为使用 Spring 架构的应用程序的测试带来了极大的便利性

  ● Spring 3.1 引入的基于 profile 的加载能力使得测试环境和正式环境可以在一个 XML 定义中完美的结合

  总之,如果您的程序中使用了 Spring,且对用 Junit 或者 testNG 来对他们进行单元测试感到力不从心,可以考虑使用 Spring test framework,它将使您的应用程序的质量上一个新的台阶。

相关链接:

使用Spring进行单元测试(上)

44/4<1234
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号