<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## Jacoco 之前在[構建eclipse項目](http://blog.csdn.net/itfootball/article/details/42710653)中已經涉及了一點,這篇文章詳細的講講。jacoco是什么,大家google或者百度一下都可以,我就不自己定義了。 需要注意的一點是Jacoco的插件目前還是孵化階段,以后會有變動。 ## gradle中的Jacoco ## 1.jacoco api 要想在gradle項目中使用jacoco。需要加入下面的plugin語句: ~~~ apply plugin: 'jacoco' ~~~ jacoco在實際上是一個JacocoPluginExtension類型的實例。該類型包括下面的屬性和方法: ### 屬性 ~~~ reportsDir:報告的存放路徑 toolVersion:jacoco的jar包版本,默認為0.7.1.201405082137 ~~~ ### 方法 ~~~ applyTo(tasks):所用于所有的任務 applyTo(task):創建jacoco的插件擴展 ~~~ ## 2.jacoco任務 **在build.gradle腳本文件中加入jacoco任務的語法如下:** ~~~ jacoco{ toolVersion = "0.7.1.201405082137" reportsDir = file("$buildDir/customJacocoReportDir") } ~~~ **jacoco只有上面2個屬性可以設置,上面的報告設置的目錄為customJacocoReportDir,這個時候我們執行測試任務** ~~~ D:\eclipse\workspare\TestNG_gradl>gradle clean test :clean :compileJava :processResources :classes :compileTestJava :processTestResources :testClasses :test BUILD SUCCESSFUL Total time: 6.443 secs ~~~ **然后再執行jacoco任務:** ~~~ D:\eclipse\workspare\TestNG_gradl>gradle jacoco :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :jacocoTestReport BUILD SUCCESSFUL Total time: 4.883 secs ~~~ **為什么要按照這個順序呢?因為jacoco是依托測試任務的,測試任務執行完,才能有代碼覆蓋率的結果。如果你直接執行clean然后執行jacoco,它會跳過jacoco任務。** ~~~ D:\eclipse\workspare\TestNG_gradl>gradle clean jacoco :clean :compileJava :processResources :classes :jacocoTestReport SKIPPED BUILD SUCCESSFUL Total time: 4.246 secs ~~~ **好了,現在我們來看一下結果:** **![](https://box.kancloud.cn/2016-01-07_568e466c72a78.jpg)** **會發現多了一個customJacocoReportDir文件目錄(這可不是我新建的,是自動生成的),打開里面的html文件,就可以看到結果報告的數據啦:** **![](https://box.kancloud.cn/2016-01-07_568e466c84072.jpg)** **(我的測試case都是簡單的輸出case,所以覆蓋率是0,真實的數據可不是這樣的)** ## 3.jacocoTestReport任務 **該任務繼承自Report任務,report任務里面分為csv、xml和html格式的測試報告。下面我們來了解了解:** ~~~ jacocoTestReport{ reports{ xml.enabled true csv.enabled true html.enabled true } } ~~~ **上面我們設置了3種格式的報告都存在。然后執行構建任務:** ~~~ D:\eclipse\workspare\TestNG_gradl>gradle clean test jacoco :clean :compileJava :processResources :classes :compileTestJava :processTestResources :testClasses :test :jacocoTestReport BUILD SUCCESSFUL Total time: 8.72 secs ~~~ **結果會生成3種報告,如下圖所示:** ![](https://box.kancloud.cn/2016-01-07_568e466c98297.jpg) **下面我們在jacocoTestReport任務中去改變jacoco結果文件的保存目錄** build.gradle ~~~ jacocoTestReport{ reports{ xml.enabled true csv.enabled true html.enabled true html.destination "${buildDir}/jacocoHtml" xml.destination "${buildDir}/jacocoXml.xml" csv.destination "${buildDir}/jacocoCsv.csv" } } ~~~ **上面三句設置destination的語句形式是一樣的,但是是有區別的。區別在于html的設置是到目錄的,其他兩個是到文件的。因為html格式的結果頁面中操作有很多,而且結果頁面也不止一個,所以需要用文件夾保存,必須寫到目錄。而另外兩個就是直接保存到文件的。直接看執行后的結果:** **![](https://box.kancloud.cn/2016-01-07_568e466ca9b17.jpg)** **由結果可以看出,jacoco任務中設定的目錄沒有生成,而是生成了jacocoTestReport任務中定義的文件目錄。** ## 4.在Test任務中jacoco配置 我們在Test任務中對jacoco進行了擴展,可以對jacoco的一些特殊的屬性配置。 ### 1.destinationFile屬性 官網解釋說是修改已執行的數據要寫入的文件。其實就是修改test.exec文件目錄或文件名。 ![](https://box.kancloud.cn/2016-01-07_568e466cbb8b7.jpg) 好,來例子試試。 ~~~ test { useTestNG(); jacoco{ destinationFile = file("$buildDir/doctor/doctorq.exec") } } ~~~ 構建后 ![](https://box.kancloud.cn/2016-01-07_568e466ccb897.jpg) ### 2.append append的意思是如果上面的destinationFile 指定的路徑存在,那么通過append來配置是否在原有的文件上追加,或者不追加。 如果append = false,那么無論destinationFile文件存不存在,都會生成新文件,意思就是先將之前的刪掉,然后生成一個新的。 如果append = true,如果之前的exec文件存在,不會刪除它,而是在目錄下再生成一個新的。下面看實際操作: **首先我們重新構建一下** ~~~ D:\eclipse\workspare\TestNG_gradl>gradle clean test :clean :compileJava :processResources :classes :compileTestJava :processTestResources :testClasses :test BUILD SUCCESSFUL Total time: 7.645 secs ~~~ **構建后的文件跟上面是一樣的,build/doctor/下有一個doctorq.exec文件。build.gradle文件如下:** ~~~ test { useTestNG(); jacoco{ append = true destinationFile = file("$buildDir/doctor/doctorq.exec") } } ~~~ **現在我們將build.gradle文件修改一下,將doctorq.exec的文件名改為doctorq1.exec。** ~~~ test { useTestNG(); jacoco{ append = true destinationFile = file("$buildDir/doctor/doctorq1.exec") } } ~~~ **這個時候我們不能執行clean任務,因為clean會把之前的build文件下全部刪除,我們就不好去比較了,那么怎么在不clean的情況還能執行test的任務呢?如果不做任何操作,直接執行test,輸出如下:** ~~~ D:\eclipse\workspare\TestNG_gradl>gradle test :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :compileTestJava UP-TO-DATE :processTestResources UP-TO-DATE :testClasses UP-TO-DATE :test UP-TO-DATE BUILD SUCCESSFUL ~~~ **會發現,所有的任務都沒有執行,因為沒有檢測到新的更新,gradle的后臺守護程序自然不會再執行,這是gradle優化執行時間的策略。那么這個時候怎么辦?** **其實修改一下case的文件就行,我們刪除其中一個case文件或者增加一個都行,然后再執行gradle test。這個時候你會發現在build/doctor/目錄下多了一個doctorq1.exec文件** **![](https://box.kancloud.cn/2016-01-07_568e466cda39a.jpg) ** 但是如果你把build.gradle的append屬性設置為false。不管你怎么操作,它都會生成新的,而不是追加。我就不具體貼例子了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看