org.springframework.test包提供了使用一个Spring容器而不用依赖于一个应用服务器或其他部署环境进行集成测试的很有价值的超类。这样的测试可以在Junit里运行(甚至是在一个IDE 里)而不用特殊的部署步骤。他们运行起来会比单元测试稍慢,但比Cactus 测试或靠部署到一个应用服务器的测试要快得多。通常很可能在几秒钟而不是几分钟或几小时内要运行好几百个针对一个开发数据库的测试(一般不是一个嵌入式数据库,而是生产中用的数据库产品)。这样的测试能快速检验你Spring上下文和使用JDBC或ORM工具的数据访问的正确装配,比如SQL语句的正确性。举例来说,你可以测试你的DAO 实现类。
org.springframework.test包中实现的功能包括:
- 通过依赖注入实现JUnit测试用例移植的能力。这使测试时重用Spring XML配置和消除针对测试的自定义设置代码成为可能。
- 在测试用例之间缓存容器配置的能力,这在用到那些比如JDBC连接池或Hibernate的SessionFactory之类的初始化很慢的资源的地方大大提高了的性能。
- 默认情况下为每个测试方法建立事务并在测试结束时回滚的基础结构。这将允许测试进行各种各样的数据存取而不用担心影响其它测试的环境。从我在几个复杂项目中使用这一功能的的经验看来,用这样一个基于回滚的方法带来的生产力和速度的提升是很明显的。
谁在使用Spring?
有很多应用程序产品使用Spring。用户包括投资和零售的银行组织、知名互联网公司、全球性顾问公司、学院机构、政府机关、防卫设备承包商、几家航空公司和科研组织(包括CERN)。
很多用户使用全部的Spring,但有些使用单独的组件。例如,一些用户从使用我们的JDBC或其它数据存取功能开始。
发展历程
自从这篇文章的第一版在2003年10 月发表以来,Spring经历了1.0 最终发布版(2004年3月)到1.1 版(2004年9 月)到1.2 最终版(2005年5月)的过程。我们相信这样一个哲学“早发布,勤发布”,所以维护性发布和小的改进一般4到6 周发布一次。
从那时起的改进包括:
- 引入一个支持包括RMI和多种web 服务协议在内的多协议远程框架。
- 支持方法注入和其他的IoC容器增强,例如管理从静态或实例工厂方法的调用中获得的对象的能力。
- 集成更多数据访问技术,在最近的1.2版中包括TopLink、 Hibernate 版本3。
- 支持用Java 5.0注释配置的声明性事务管理,不需要用XML元数据来识别事务性方法(1.2)。
- 支持Spring所管理对象的JMX 管理(1.2)。
- 集成了Jasper 报告、Quartz计划和AspectJ。
- 将JSF作为一种web 层技术集成进来。
我们打算继续快速的革新和增强。下一个主要版本会是1.3。计划中的增强包括:
- XML配置增强(计划在1.3 版内),这将允许用自定义XML标签通过定义一个或多个单一的、合法的标签来扩展基本的Spring配置格式。这不仅可能显著简化典型配置并减少配置错误,还会成为基于Spring的第三方产品的开发者的理想选择。
- 把Spring Web Flow集成到Spring的核心中(计划在1.3 版内)。
- 支持运行时应用程序动态重配置。
- 支持用Java 外的语言编写的应用程序对象,比如Groovy、Jython或其他运行于Java 平台上的脚本语言。这些对象能得益于Spring IoC容器的完整服务和在脚本改变时动态重新装载而不影响由IoC容器引用到它们的对象。
作为一个敏捷项目,Spring主要由用户需求驱动。所以我们不会开发没有任用的功能,我们也会仔细倾听来自我们用户社群的声音。
Spring Modules 是一个由Interface 21 的Rob Harrop领导的相关项目,它将Spring平台扩展到那些Spring核心没有必要完全支持的,但仍然对很多用户有价值的领域。这个项目也作为一个孵化器,所以其中的一些功能会最终集成到Spring核心中。Spring Modules 目前包括如下领域:与Lucene搜索引擎和OSWorkflow工作流引擎的集成、一个基于AOP的声明性缓存解决方案、与Commons Validator 框架的集成。
有趣的是,尽管这篇文章的第一版发表在Spring 1.0 最终版发布的六个月前,几乎所有的示范代码和配置仍然能不经改动地在今天的1.2 版上运行。我们为自己在向下兼容方面的骄人记录感到自豪。这也展现了依赖注入和AOP实现非侵入性API的能力,还表现了我们尽心尽力为社区提供一个能够运行重大应用程序的稳定框架的严谨。
文章来源于领测软件测试网 https://www.ltesting.net/