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

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

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

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

    用 Jython 構建 JUnit 測試包

    發布: 2009-6-04 11:14 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 34次 | 進入軟件測試論壇討論

    領測軟件測試網  開發人員有多種理由決定自動化單元測試。許多人甚至進一步發揮它,自動化這些測試的定位和執行。但是如果想要測試裝具模塊(testharness)像靜態定義的那樣運行呢?請跟隨開發員 Michael Nadel,看看如何利用 Python 模擬靜態定義的 JUnit TestSuite 類。 
            JUnit 測試框架被越來越多的開發小組所共同使用。歸功于各種各樣的測試裝具模塊,現在可以測試構成任何 Java 應用程序的幾乎每一個組件。事實上,幾乎整個二級市場似乎都是用圍繞 Junit 建立的。包括 Cactus、jfcUnit、XMLUnit、DbUnit 和 HttpUnit 這樣的裝具模塊都可以免費供開發人員用于測試應用程序。隨著系統的復雜程度的增加,并且有這么多工具可供使用,沒有什么理由不依靠單元測試。

            不過,開發人員不僅僅是程序員。我們與用戶交互以修復 bug 并確定需求。我們參加會議并進行電話推銷。我們完成一些(有時全部)質量保證功能。既然有這么多責任,希望盡可能自動化就是自然而然的了。因為好的團隊(除了其他事情外)會進行大量測試,希望自動化不同的開發過程的人常常會對這一領域進行詳細研究。

    自動化單元測試


            有許多種自動化所有項目測試用例的定位和執行的方法。一種解決方案是聯合使用 Ant 的 junit 任務與嵌入的 fileset 任務。這樣就可以包括和排除特定目錄中的文件(基于文件名樣式)。另一種選擇是使用 Eclipse 的一個功能,它可以指定所有測試所在的和執行的目錄。前一種選擇提供了對運行的測試進行過濾的靈活性(并且由于它是一個純粹的無頭(headless)Java 應用程序,可以運行在幾乎所有地方),后一種選擇可以調試“動態”包。是否可以結合這兩種方式的強大和靈活性?

            有了 Python 編程語言的 Java 平臺實現 -- Jython,回答是響亮的“可以!”(如果不熟悉 Jython,應當在繼續本文之前補充這方面知識,更多信息請參閱后面的 參考資料)。利用 Jython 的強大和優雅,可以維護一個定位文件系統、搜索匹配某種樣式的類和動態編譯 JUnit TestSuite 類的腳本。這個 TestSuite 類像所有其他靜態定義的類一樣,可以用喜愛的調試程序容易地調試。(在本文中使用的例子假定使用的是 Eclipse IDE,不過,我在這里描述的技術不用做很多修改就可以用于大多數其他 IDE。)

            在進行任何設計決定時,必須對所做的選擇和決定的影響進行權衡。在這里,為了得到調試動態生成的測試包的能力,必須增加額外的復雜性。不過,這種復雜性被 Jython 自身所減輕了:Jython 經過很好測試并得到很好的支持,并且是開放源代碼的。而且,Python 越來越成為面向對象的、平臺獨立的編程的事實上的標準。出于這兩種原因,采用 Jython 的風險很少,特別是它提供了這樣的好處:在創建和調試動態生成的 JUnit TestSuite 類方面具有無可匹敵的靈活性。

            如果是否采用 Jython 是主要的考慮,那么即使不使用它也可以在解決原來的問題方面有所進展。不使用 Jython 的話,可以用一個 Java Property 文件存儲一組類、目錄和包,以在包中加入或者排除測試。不過,如果選擇使用 Jython,就可以利用整個 Python 語言和運行時來解決選擇執行哪些測試的問題。Python 腳本比 Java Property 文件靈活得多,它只受限于您的想像力。

            利用 Jython 與 Java 平臺的無縫集成可以創建靜態定義的、然而是動態構建的 TestSuite 類。有大量關于 JUnit 的教程,不過還是看下面這兩行代碼作為復習。清單 1 是靜態構建 TestSuite 類的一個例子(這個例子取自 JUnit: A Cook's Tour,有關它和其他 JUnit 資源的鏈接請參閱 參考資料):

            清單 1.靜態定義 TestSuite 
            public static Test suite() {
                return new TestSuite( MoneyTest.class );
            }
                    


            清單 1 表明 TestSuite 是由 Test 類的類實例組成的。這個裝具模塊完全利用了這一點。為了分析這個工具的代碼,應從 參考資料中下載本文的示例 JAR 文件。這個文檔包含兩個文件:DynamicTestSuite.java 和 getalltests.py,前者是一個用 Phthon 腳本動態生成 TestSuite 的 JUnit 測試裝具模塊,后者是一個搜索匹配特定樣式的文件的 Python 腳本。DynamicTestSuite.java 使用 getalltests.py 構建 TestSuite ?梢孕薷 getalltests.py 以更好地適合自己的項目的需要。


    延伸閱讀

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

    TAG: junit Junit JUnit JUNIT Jython 構建


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(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>