在我的gradle构建中,我有两个测试任务,如下所示:

task testAAA(type: Test) {
    filter {

        includeTestsMatching "*AAA*"
    }

    finalizedBy jacocoTestReport
}


task testBBB(type: Test) {
    filter {

        includeTestsMatching "*BBB*"
    }

    finalizedBy jacocoTestReport
}

这将在build / jacoco中生成2个.exec文件:
  • testAAA.exec
  • testBBB.exec

  • 我想生成一个涵盖报告,该报告从.exec文件的全部/全部中获取输入,我尝试这样做:
    jacocoTestReport {
        executionData fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec")
    
        reports {
            xml.enabled true
        }
    
    }
    

    当我尝试得到此错误时:
    Execution failed for task ':Project1:jacocoTestReport'.
    > Unable to read execution data file Project1/build/jacoco/test.exec
    
    Project1/build/jacoco/test.exec (No such file or directory)
    
    

    当我明确提供了executionData规范时,jacocoTestReport为什么要寻找“test.exec”?

    最佳答案

    我建议传递测试任务而不是文件树。这将使插件能够确保查找正确的文件,并解决可能发生的某些执行顺序问题,例如确保此报告任务在测试任务本身之后运行。

    所以像:

    jacocoTestReport {
        executionData tasks.withType(Test)
    
        reports {
            xml.enabled true
        }
    }
    

    09-05 01:03