close

  受命瞭解測試裡的Code Coverage,發現一個不錯的目錄網站http://java-source.net,和http://www.open-open.com一樣,是絕世武功的目錄。

  這是題外話,Google大多推薦Cobertura,另外也有推薦Emma,皆以JUnit為基礎。而Emma卻未名列java-source.net裡。這兩個都有下載來踹,各有千秋,也各有適用範圍,我會建議兩個都用。

  Emma雖然有maven plugin的支援,但目前只到0.5版,她在Eclipse plugin的支援相對出色,適用於個人進行JUnit Test Code Coverage之用,在Eclipse的view看到每支程式的code coverage;Cobertura則可以透過maven plugin產生比美JavaDoc的Code Coverage Report,適用整個系統的code coverage產出閃亮亮的Report給老板或客戶看。

  Emma大概到2007年就沒再更新版本了,其Eclipse plugin叫EclEmma,網址是http://update.eclemma.org/.。安裝後,在Toolbar會多出如下的按鈕和選單:

image 滑鼠先在專案名稱點選後,再從圖左方式選取。

Coverage As可以選擇Java Application或JUnit Test進測Code Coverage,通常是選JUnit Test。在Coverage View長相會是如下:

image 開發者就能一看出他的source的Code Coverage。可以點選裡的java,在Java editor裡看出哪些程式沒有Cover到(紅色Highlight)。

image 在Emma比之Cobertura還有黃色highlight,表示局部Cover。

Emma可以用Maven產出Report,不過沒有像Cobertura那麼閃亮亮就是了,先在pom.xml加如下的plugin:

<project>
   [...]
  <reporting>
     <plugins>
       <plugin>
         <groupId>emma</groupId>
         <artifactId>maven-emma-plugin</artifactId>
         <version>0.5</version>
       </plugin>
     </plugins>
   </reporting>

   [...]
</project>

然後再執行mvn emma:emma就可以產出以下不怎麼閃亮的Report,位在target/site/emma/的index.html

image


  而Cobertura怎麼透過Maven去產出Report呢?在pom.xml設定如下:

<project>
   [...]
  <reporting>
     <plugins>
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>cobertura-maven-plugin</artifactId>
         <version>2.0</version>        <!-- 據Google指稱,2.1版以上有點問題,所以用2.0 -->
            <configuration>
                <formats>
                    <format>html</format>
                    <format>xml</format>
               </formats>
           </configuration>
       </plugin>
     </plugins>
   </reporting>

   [...]
</project>

然後再執行mvn cobertura:cobertura就可以產出以下閃亮亮的Report,位在target/site/cobertura/的index.html,是不是很適合向上面的交差呢^^?

image

[後記]強烈懷疑Cobertura想要強娶Emma,因為Cobertura有個emma-maven-plugin,和Emma的maven-emma-plugin別苗頭。而Emma一些Maven的goal都不見了,如emma:test、emma:report,而且訊息是指在Cobertura裡找不到。也許兩者各有擅長,準備聯姻了。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Jemmy 的頭像
    Jemmy

    Jemmy Walker

    Jemmy 發表在 痞客邦 留言(0) 人氣()