2016-11-22 85 views
0

我正在尝试生成jacoco报告,但当我将testCoverageEnabled属性设置为true时,我不断收到错误消息。启用覆盖时,为什么Android Instrumentation测试报告失败?

java.lang.NoSuchMethodError: No static method $jacocoInit()[Z in class L... 

卸下testCoverageEnabled财产我可以运行测试,但我不能生成报告。

我使用标准的Jacoco配置。单独运行时单元测试和集成测试运行正常。

对此问题的所有在线引用似乎都是项目中的特定配置问题。任何帮助表示赞赏。

更新

apply plugin: 'jacoco' 

task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { 

    reports { 
     xml.enabled = true 
     html.enabled = true 
    } 

    def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*'] 
    def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter) 
    def mainSrc = "${project.projectDir}/src/main/java" 

    sourceDirectories = files([mainSrc]) 
    classDirectories = files([debugTree]) 
    executionData = fileTree(dir: "$buildDir", includes: [ 
      "jacoco/testDebugUnitTest.exec", 
      "outputs/code-coverage/connected/*coverage.ec" 
    ]) 
} 
+0

你能告诉你的jacoco配置? – Artyom

+0

@Artyom,更新在 – abs

+0

你使用什么工具版本? – Artyom

回答

0

我的工作配置。可能它可以帮助你。

apply plugin: 'jacoco' 

     def coverageSourceDirs = [ 
       '../app/src/main/java' 
     ] 

     jacoco { 
      toolVersion = "0.7.6.+" 
     } 

     task jacocoTestReport(type: JacocoReport, dependsOn: "testDebugUnitTest") { 
      group = "Reporting" 
      description = "Generate Jacoco coverage reports" 

      classDirectories = fileTree(
        dir: '../app/build/intermediates/classes', 
        excludes: ['**/R.class', 
           '**/R$*.class', 
           '**/*$ViewInjector*.*', 
           '**/BuildConfig.*', 
           '**/Manifest*.*'] 
      ) 


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

      reports { 
       xml.enabled = true 
       html.enabled = true 
      } 
     } 

和buildTypes添加此

testCoverageEnabled = true 
+0

感谢此。不幸的是,这种配置不会生成覆盖率报告,也无法运行集成测试。错误信息是'未找到测试。这通常意味着你的测试类不是你测试运行者期望的形式(例如,不从TestCase继承或缺少@Test注释)。“我假设它是一个单独的基础问题,我没有能力弄清楚 – abs

相关问题