軟件絕對領域

          Cactus工作原理

          Cactus是Jakarta的子項目之一,是對JUnit的一個擴展。Catus是Java EE容器內測試的事實標準。

          Cactus是針對集成單元測試的開源框架。可以在容器內對JAVA EE服務器端組件(如JSP,Servlet,EJB,數據庫等)進行細粒度的單元測試。

          o_Cactus生命周期.jpg
          Cactus測試的生命周期

          Cactus測試會創建兩個TestCase,一個在客戶端,另一個在服務器端。兩個TestCase分別由各自的TestRunner執行。還有創建一個proxy redirector對象,這個對象實現了Cactus的邏輯。

          Cactus測試分為在客戶端JVM和服務器端JVM(也就是在容器內)兩個方面的測試。

          第一步 - 執行beginXXX
                這一步是在客戶端中運行。
                當存在beginXXX方法時,將自動執行。這個方法的作用是準備提供給服務端redirector的信息。傳遞的信息是HTTP相關參數,比如HTTP報文頭部,cookie等等。也就是設置這個測試需要的一些參數。
                這是在客戶端TestCase創建后調用。

          第二步 - 打開redirector連接
                這一步就是服務器和客戶端進行連接。在第一步中準備的一些參數在這一步傳遞給服務器端的redirector。當然這是在Cactus的redirector對象創建后執行。

          第三步 - 創建服務器端的TestCase實例
                這一步是在服務器端執行。
                redirector對象會創建一個服務器端的TestCase實例。獲得容器對象后通過設置類變量賦給TestCase實例。

          第四步 - 在服務器端進行測試
                在服務器端啟動測試,調用JUnit的一系列方法(setUp,testXXX,tearDown等),并把測試結果保存到一個ServletConfig servlet對象中。

          第五步 - 執行endXXX 
                這一步是在客戶端在獲得來自redirector的響應后執行。
                執行這個方法,作用是對比測試結果是否與預期相同,也就是對獲得的測試結果進行斷言。

          第六步 - 收集測試結果
                這一步就是把服務端的測試結果返回到客戶端。
                在Cactus生命周期的最后,總結客戶端的測試所得的返回信息(第五步)和服務端中執行的結果(第四步),運行TestRunner把測試結果顯示出來。到此Cactus完成任務。

             以上的Cactus的生命周期,測試驅動開發過程中不必關注,其中的復雜性被封裝在Cactus框架中。對于開發者只需擴展Cactus中的TestCase(如JSPTestCase,ServletTestCase等等),在其中編寫初始化方法設置參數,測試方法即可。


          參考資料及網站:
                Manning - JUnit in Action - Vincent Massol - 2003
                Jakarta http://jakarta.apache.org/index.html

          posted on 2007-02-19 23:19 _Kai_ 閱讀(545) 評論(0)  編輯  收藏 所屬分類: 隨感

          公告

          碼農一枚

          歡迎大家發E-mail到 與我討論關于軟件開發的各種看法。

          最新Blog地址:http://thekayway.com/

          導航

          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          統計

          常用鏈接

          留言簿(2)

          隨筆分類(21)

          隨筆檔案(18)

          常去的地方

          技術站點

          朋友的Blog

          搜索

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 玛沁县| 同德县| 陇西县| 安泽县| 元朗区| 仁化县| 右玉县| 仙桃市| 黔南| 正镶白旗| 济阳县| 紫金县| 怀安县| 黑龙江省| 宁乡县| 炉霍县| 桑植县| 岗巴县| 昭平县| 邵阳县| 武鸣县| 孟州市| 兴化市| 镇宁| 昆明市| 莱西市| 南投县| 阳西县| 汾阳市| 宁明县| 海城市| 隆回县| 河曲县| 广饶县| 马边| 乐清市| 贵港市| 两当县| 烟台市| 石首市| 确山县|