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的能力,還表現了我們盡心盡力為社區提供一個能夠運行重大應用程序的穩定框架的嚴謹。
文章來源于領測軟件測試網 http://www.kjueaiud.com/