簡體   English   中英

搖籃| Jacoco任務| 測試報告

[英]Gradle | Jacoco Task | test report

在一些博客中,我找到了以下任務來生成jacoco報告:

task jacocoTestReport(type: JacocoReport, dependsOn: "testDebugUnitTest") {
    group = "Verification"
    description = "Generate Jacoco coverage reports after running tests."
    reports {
        xml.enabled = true
        html.enabled = true
    }

    classDirectories = fileTree(
        dir: "${project.buildDir}/intermediates/classes/debug",
        excludes: ['**/R.class', 
                   '**/R$*.class', 
                   '**/BuildConfig.*', 
                   '**/Manifest*.*', 
                   'android/**/*.*'
        ])

    additionalSourceDirs = files(coverageSourceDirs)
    sourceDirectories = files(coverageSourceDirs)
    executionData = files('build/jacoco/testDebugUnitTest.exec')
}

我是Gradle的新手,我想詳細了解此任務的每個步驟。 以下是我的查詢:

  1. 創建新任務時, dependsOn:“ testDebugUnitTest”的功能是什么? 即使我不發表此聲明,我仍然能夠生成報告。

  2. 什么是testDebugUnitTest? 它是如何產生的?

  3. 模式之間有什么區別

    '* * /R.class'和'* * /R$*.class'

    兩者都從報告中排除了R文件,那么有什么區別?

  4. 為什么R類和Android類使用不同的模式?

    '* * /R.class'與'android / * * / *。 *'

  5. AdditionalSourceDirs和源目錄之間有什么區別? 根據文檔,兩者的描述相同

應報告覆蓋率的來源集。

  1. 什么是executionDatatestDebugUnitTest.exec testDebugUnitTest.exec是否自動生成,為什么我們需要提到這一點?

創建新任務時,dependsOn:“ testDebugUnitTest”的功能是什么? 即使我不發表此聲明,我仍然能夠生成報告。

這樣可以確保testDebugUnitTest在jacocoTestReport之前運行。 您通常會設置此類任務依賴項,因為一個任務取決於另一個任務的輸出。 在這種情況下,您希望通過testDebugUnitTest運行測試,然后再嘗試為它們生成報告。

順便說一句,我相信Jacoco可以通過檢測編譯器生成的類文件來工作。 該儀器生成Jacoco可以分析的數據,以確定是否調用方法。 但是您需要執行代碼才能獲取該數據,因此為什么要先運行測試。

什么是testDebugUnitTest? 它是如何產生的?

這是一個任務。 可以在構建腳本,父構建腳本中定義任務,也可以通過插件添加任務。 您顯示的示例代碼不會告訴我們該任務的來源。

話雖如此,Android插件似乎可以完成此任務。

模式之間有什么區別

'* * /R.class'和'* * /R$*.class'

編譯后的內部和匿名類文件名為“ $ .class”。 這只是確保Jacoco選擇了那些內部和匿名類。

為什么R類和Android類使用不同的模式?

'* * /R.class'與'android / * * / *。 *'

不知道。 我不知道這是R類。 Android模式只是縮小了范圍,因為它是基於Android類位於android文件夾中的某個位置而工作的。

AdditionalSourceDirs和源目錄之間有什么區別? 根據文檔,兩者的描述相同

我不確定,但似乎sourceDirectories是用於源集的 請注意,該任務具有sourceSets()方法。 這將填充sourceDirectories文件集合。

additionalSourceDirectories似乎用於未定義為源集一部分的其他源目錄。

老實說,這個任務似乎沒有很好的記錄。

什么是executionData&testDebugUnitTest.exec? testDebugUnitTest.exec是否自動生成,為什么我們需要提到這一點?

我猜想testDebugUnitTest.exec是當您通過調試單元測試運行檢測類時生成的文件。 executionData是一種告訴JacocoReport任務在哪里找到該文件的方法。 但是正如我所說,我正在接受有根據的猜測。

創建新任務時,dependsOn:“ testDebugUnitTest”的功能是什么? 即使我不發表此聲明,我仍然能夠生成報告。

  • 這意味着您的任務調用依賴於其自身執行之前的任務。

什么是testDebugUnitTest? 它是如何產生的?

  • 這是預定義的作業,它將啟動所有測試。

模式之間有什么區別

'* * /R.class'和'* * /R$*.class'

  • '* * /R.class'-在任何路徑中具有R.class名稱的文件
  • '* * /R$*.class'-名稱中帶有R前綴且任何路徑中都帶有.class擴展名的文件

兩者都從報告中排除了R文件,那么有什么區別? 為什么R類和Android類使用不同的模式?

'* * /R.class'與'android / * * / *。 *'

  • 'android / * * / *。 *'還排除了一些不同的文件,這些文件使該模式更加復雜

AdditionalSourceDirs和源目錄之間有什么區別? 根據文檔,兩個來源集的描述是相同的,應該報告其覆蓋率。

  • 沒有不同。 如果有意義,應該將AdditionalSourceDirs用於第三方組件。

什么是executionData&testDebugUnitTest.exec? testDebugUnitTest.exec是否自動生成,為什么我們需要提到這一點?

  • executionData-要運行的一組測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM