測試框架遷移

【測試之體系,人人皆有一磚一瓦】

【概述】
測試是非常重要的,構建一個好的測試對於系統的質量、重構非常重要。下面簡單介紹下測試的一些框架,有的是帶過,此篇主要是我這次遷移測試框架的一些總結。如果大家對其中的一些框架比較感興趣,可以去研究下。 推薦:junit\testng\jmockit 。對於每個開發工程師肯定會大有益處的。其中會涉及到很到的java技術點。
【選型】
測試框架非常多,從最流行的junit到testng。業界的單元測試框架非常多,也比較複雜。爲了減少大家選型帶來的成本,阿里巴巴就開發了自己的單元測試框架,名爲 jtester:http://code.google.com/p/java-tester/。jtester集成了非常多的框架,大家可以試用下。jtester其中內嵌了:testng、jmockit、script.bsh、fitnesse:http://fitnesse.org/FitNesse.UserGuide.OneMinuteDescriptionjcommander: 是一個非常小的Java 類庫,用來解析命令行參數、JTA遠程登陸、jtester也實現很多自己的一些框架,如:斷言等。不過最難得是它把如此多好的框架無縫地集成在一起了。
【遷移】
最近幾天在遷移單元測試,簡單看了下以前的單元測試框架。
            <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.junit</artifactId>
                    <version>4.5</version>
                    <scope>test</scope>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>sourceforge.spring.modules.test</artifactId>
                    <version>2.5.6</version>
                    <scope>test</scope>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.testng.jdk15</artifactId>
                    <version>5.8</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.unitils</artifactId>
                    <version>2.4</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.dbunit</artifactId>
                    <version>2.4.3</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.hamcrest-all</artifactId>
                    <version>1.2</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.mockito-all</artifactId>
                    <version>1.8.0</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.jmock</artifactId>
                    <version>2.5.1</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.jmockit</artifactId>
                    <version>0.997</version>
               </dependency>
               <dependency>
                    <groupId>com.alibaba.external</groupId>
                    <artifactId>test.jmock-legacy</artifactId>
                    <version>2.5.1</version>
               </dependency>
其中有很多的框架在項目中根本就沒有用到,所以就需要進行清理,所以我把在測試階段的類加載信息打印出來(-XX:TraceClassLoading),再分析。不過這個比較繁瑣
後來還是直接只用mvn dependency:analyze,來分析,
{這些Unused declared dependencies 列表並不準確,如果project中還有大量反射等,移除包會出現想不到的意外,此點需要慎重。}

分析後發現以下的框架在系統中沒有應用:
misc.ognl.jar(2.6.9)
     不知道幹啥
test.hamcrest-all.jar(1.2)
     http://code.google.com/p/hamcrest/
     Hamcrest it is not a testing library: it just happens that matchers are very useful for testing這個就不講了。
test.dbunit:jar(2.4.3)
     http://www.dbunit.org/
     數據庫測試
jmock jmock-legacy(2.5.1)
     mock框架
     http://www.jmock.org/
mockito(1.8.0)
     是一個流行的Mocking框架
把以上的測試框架全部去掉。
後來進入,再加入了jtester測試框架
【兼容】
 【工程中既有 testng又有junit的單元測試,怎麼都能跑呢?】
 本質testng是支持 junit單元測試的。
在maven中單元測試是用surefire來跑的。
這個就需要在surefire來設定了。如果不設置suiteXmlFiles屬性,surefire會自動生成suiteXmlFile。他會自動生成testng文件,生成的規則是找test開頭或者結尾的類。
如果想指定,則需要junit與testng分別寫suite。其中一個junit屬性設置爲true。
【思考】
對於比較龐大的項目,那麼測試的易用性非常重要。jtester是非常易用,並且他是開源的。不過對於文檔和代碼,好像作者沒有及時更新啊。如果有朋友需要使用,可以聯繫我。嘿嘿。。。
如果項目比較小,建議還是使用原生的junit與testng。

發佈了76 篇原創文章 · 獲贊 109 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章