• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    JBoss Seam框架下的單元測試

    發布: 2009-6-16 13:14 | 作者: 網絡轉載 | 來源: 領測軟件測試網采編 | 查看: 125次 | 進入軟件測試論壇討論

    領測軟件測試網 Seam 下的單元測試一直存在一些配置方面的問題,而且 Seam 框架提倡最多的是整合測試。所以關于單元測試,無論是 Seam 的參考手冊還是其他參考書(Seam In Action, etc.)里都沒有詳細介紹和例子?偹苤,單元測試是保證質量TDD 必不可少的部分,對項目的重要性不言而喻。本文以實例說明了 Seam 的單元測試如何進行,有不對之處請大家指出 :-)

      一. Seam 下的單元測試的難點與問題

      1. Seam 框架依賴于容器環境

      不只是 Seam,現在的 Web 框架很少有可以在純 JavaSE 環境中可運行的,所以脫離了容器環境,框架是不能運行的,其實也是沒有意義的。只要涉及到了容器,就會帶來很多的問題,而且因為容器的不同,問題錯綜復雜。

      2. 容器內 / 容器外測試的復雜度

      這里說的容器內測試就是在部署應用后在容器的環境里拿到應用的上下文,也就是在應用運行時在同一環境(容器內)拿到待測實例并進行測試。換句話說,測試用例與實現都是運行在容器的環境里。而容器外測試則是測試環境通過遠程訪問容器,拿到容器內的 Remote Seam Components / Remote EJB Session Beans 實例,從而在容器外的測試環境下進行測試。

      3. JBoss 社區產品的整體性

      Seam 是 JBoss 的,jBPM 是 JBoss 的,等等 Seam 相關的依賴環境都是 JBoss 的。所以,容器不是 JBoss 的的話,兩個字:麻煩。雖然現在的 Seam(ver 2.1.1) 在文檔 / 示例中說明了如何在非 JBoss AS 中配置與使用 Seam,但據筆者目前的嘗試,要想順利使用 Seam 的 Advanced 功能,JBoss AS / HIbernate 不用都不行。這也要求了要做 Seam 的單元測試,就必須對很多 JBoss 產品有一定的了解。

      二. 解決問題

      歸根結底,Seam 下的單元測試只所以不好做,還是難在了配置上。要配置好一個‘類容器’的環境才能讓 Seam 跑起來。

      1. 搭建‘類容器’環境

      從配置上來說,我們首先要搭建一個容器環境。把下載下來的 Seam 解壓,把 bootstrap 里面找到 conf 與 deploy 這兩個目錄并 copy 到測試環境目錄下。在測試環境目錄下建立 WEB-INF 目錄,并把 Seam 的核心配置文件 components.xml 放置到這里,還有 JSF、Web 部署描述符等需要的都放置到 WEB-INF 目錄里。

      2. 在測試用例中拿到待測 Seam 組件實例

      從代碼上來說,拿到待測組件實例是關鍵。在測試代碼中,可以通過 org.jboss.seam.Component.getInstance() 方法從 Seam 框架中獲取需要的組件實例,這是單元測試能否成功的關鍵。

      3. 初始化 Seam 框架

      在測試代碼中需要手動初始化 Seam 框架與應用,測試結束后也同樣需要手動結束框架與應用,其都是通過 org.jboss.seam.context.Lifecycle 進行操作的。

      4. 測試框架的選擇

      這不是相對于 Seam 單元測試的關鍵問題,但是,恰但地選擇測試框架對于項目而言是很重要的?偹苤,目前最常用的兩個測試框架 JUnit 與 TestNG 各有千秋,這里我簡單總結一下:

      JUnit:適合小型項目,對于簡單的單元測試可以很好的發揮其‘小而強大’的優勢,主流 IDE 都有其功能或插件。但要進行整合測試(集成界面)就困難了。

      TestNG:適合任何項目,IDE 支持不是很好,但是 JUnit 能做的它都能做,而且更細致,適用場景更廣泛。

    三. 示例

      筆者是用 NetBeans IDE 與 Maven 搭建的項目,Seam 下的單元測試的具體配置和示例代碼片斷如下:
            

     

      初始化:

      if (!Lifecycle.isApplicationInitialized()) {

      Lifecycle.beginApplication(new HashMap<String, Object>());

      new Initialization(new MockServletContext()).create().init();

      Lifecycle.beginCall();

      }

      獲取待測組件實例:

      processDefTransformer = (ProcessDefTransformService) Component.

      getInstance(ProcessDefTransformer.class);

      assertNotNull(processDefTransformer);

      結束:

      Lifecycle.endApplication();
     


      四. 總結

      本文筆者總結了 Seam 下單元測試的難點與問題,也提出了一種解決方案。隨著 Seam 框架的日漸穩定與成熟,以及 WebBeans 規范的發布,相信 Java Web,Java EE 將迎來一個嶄新的時代!

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: JBOSS JBoss Jboss Seam 單元 框架


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>