亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 >
用Cobertura做測試覆蓋率
作者:網絡轉載 發布時間:[ 2013/1/28 13:59:40 ] 推薦標簽:

不要漏掉測量單元測試包和類本身。我不止一次注意到,某些個測試方法或者類沒有被測試包真正運行。通常這表明名稱規范中存在問題(比如將一個方法命名為 tesSomeReallyComplexCondition,而不是將其命名為 testSomeReallyComplexCondition),或者忘記將一個類添加到主 suite() 方法中。在其他情況下,未預期的條件導致跳過了測試方法中的代碼。不管是什么情況,都是雖然已經編寫了測試代碼,但沒有真正運行它。JUnit 不會告訴您它沒有像您所想的那樣運行所有測試,但是 Cobertura 會告訴您。找出了未運行的測試后,改正它一般很容易。

運行 Cobertura

在了解了測量代碼覆蓋率的好處后,讓我們再來討論一下如何用 Cobertura 測量代碼覆蓋率的具體細節。Cobertura 被設計成為在 Ant 中運行。現在還沒有這方面的 IDE 插件可用,不過一兩年內也許會有了。

首先需要在 build.xml 文件中添加一個任務定義。以下這個 taskdef 元素將 cobertura.jar 文件限定在當前工作目錄中:

<taskdef classpath="cobertura.jar" resource="tasks.properties" /> 


然后,需要一個 cobertura-instrument 任務,該任務將在已經編譯好的類文件中添加日志代碼。todir 屬性指定將測量類放到什么地方。fileset 子元素指定測量哪些 .class 文件:

<target name="instrument">
  <cobertura-instrument todir="target/instrumented-classes">
    <fileset dir="target/classes">
      <include name="**/*.class"/>
    </fileset>
  </cobertura-instrument>
</target> 


用通常運行測試包的同一種類型的 Ant 任務運行測試。惟一的區別在于:被測量的類必須在原始類出現在類路徑中之前出現在類路徑中,而且需要將 Cobertura JAR 文件添加到類路徑中:

<target name="cover-test" depends="instrument">
  <mkdir dir="${testreportdir}" />
  <junit dir="./" failureproperty="test.failure" printSummary="yes"
         fork="true" haltonerror="true">
    <!-- Normally you can create this task by copying your existing JUnit
         target, changing its name, and adding these next two lines.
         You may need to change the locations to point to wherever
         you've put the cobertura.jar file and the instrumented classes. -->
    <classpath location="cobertura.jar"/>
    <classpath location="target/instrumented-classes"/>
    <classpath>
      <fileset dir="${libdir}">
        <include name="*.jar" />
      </fileset>
      <pathelement path="${testclassesdir}" />
      <pathelement path="${classesdir}" />
    </classpath>
    <batchtest todir="${testreportdir}">
      <fileset dir="src/java/test">
        <include name="**/*Test.java" />
        <include name="org/jaxen/javabean/*Test.java" />
      </fileset>
    </batchtest>
  </junit>
</target>> 


Jaxen 項目使用 JUnit 作為其測試框架,但是 Cobertura 是不受框架影響的。它在 TestNG、Artima SuiteRunner、HTTPUni 或者在您自己在地下室開發的系統中一樣工作得很好。

后,cobertura-report 任務生成本文開始部分看到的那個 HTML 文件:

<target name="coverage-report" depends="cover-test">
 <cobertura-report srcdir="src/java/main" destdir="cobertura"/>
</target> 


srcdir 屬性指定原始的 .java 源代碼在什么地方。destdir 屬性指定 Cobertura 放置輸出 HTML 的那個目錄的名稱。

在自己的 Ant 編譯文件中加入了類似的任務后,可以通過鍵入以下命令來生成一個覆蓋報告:

% ant instrument
% ant cover-test
% ant coverage-report 


當然,如果您愿意的話,還可以改變目標任務的名稱,或者將這三項任務合并為一個目標任務。

結束語

Cobertura 是敏捷程序員工具箱中新增的一個重要工具。通過生成代碼覆蓋率的具體數值,Cobertura 將單元測試從一種藝術轉變為一門科學。它可以尋找測試覆蓋中的空隙,直接找到 bug。測量代碼覆蓋率使您可以獲得尋找并修復 bug 所需的信息,從而開發出對每個人來說都更健壯的軟件。

上一頁123下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 国产v国产v片大片线观看网站 | 欧美激情伊人 | 精品欧洲videos | 欧美在线视频观看 | 日韩激情文学 | 国产第二十三页浮力影院 | 免费国产成人高清在线观看视频 | 色综合天天娱乐综合网 | 一级一毛片 | 风流放荡的艳妇小说 | 天天好逼365 | 男女无遮挡毛片免费视频 | 免费网站在线观看国产v片 免费网站看v片在线成人国产系列 | 亚洲国产天堂久久综合网站 | 亚洲午夜免费 | 名优写真一区二区在线 | 免费h视频 | 看片免费黄 | 能直接看黄的网站 | 在线中文高清资源免费观看 | 欧美线在线精品观看视频 | 一级女性全黄生活片看看 | 日韩激情中文字幕 | 国产黄a三级三级三级 | 亚洲综合影视 | 免费一级毛片能看的 | 日韩成人免费视频播放 | 成人1000部免费观看视频 | 妞干网免费视频 | 亚洲制服丝袜第一页 | 蜜臀91 | 香蕉视频在线观看网站 | 国产一卡2卡3卡四卡精品网 | 国产日韩精品一区二区在线观看 | 午夜成a人片在线观看 | 中文字幕欧美日韩高清 | 好吊色免费视频 | 天堂中文www在线 | 国产偷国产偷高清视频 | 在线看欧美成人中文字幕视频 | 一区二区精品久久 |