移动测试基础 有关 Jacoco 报告生成中文乱码问题

淼淼淼 · 2017年04月19日 · 最后由 陈恒捷 回复于 2017年05月16日 · 4533 次阅读
  • 有关 Jacoco 报告中的中文乱码问题
  • 通过 task 生成报告,报告中出现了中文乱码,怎么解决?
  • 附 task 代码块:

    task jacocoTestReport(type: JacocoReport) {
    group = "Reporting"
    description = "Generate Jacoco coverage reports after running tests."
    reports {
        xml.enabled = true
        html.enabled = true
    }
    classDirectories = fileTree(
            dir: './build/intermediates/classes/debug',
            excludes: ['**/R*.class',
                       '**/*$InjectAdapter.class',
                       '**/*$ModuleAdapter.class',
                       '**/*$ViewInjector*.class'
            ])
    sourceDirectories = files(coverageSourceDirs)
    executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")
    
    doFirst {
        new File("$buildDir/intermediates/classes/").eachFileRecurse { file ->
            if (file.name.contains('$$')) {
                file.renameTo(file.path.replace('$$', '$'))
            }
        }
    } 
    
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 5 条回复 时间 点赞

bulid 文件里的编码格式要和代码的编码格式一致

niu 回复

嗯。感谢回复。我之前也觉得可能是 gradle 编码问题,首先我 project encoding 都是 utf-8,我在 build 里面设置了:
tasks.withType(JavaCompile) {

options.encoding = "UTF-8"

} 或者在 gradle.bat 里面设置:set DEFAULT_JVM_OPTS="Dfile.encoding=UTF-8"
但是重新执行 task 任然没有解决.😭

之前也踩了这个坑,原因是我们源码打包是在 mac 上做的,但生成覆盖率报告改成了 windows ,默认编码不一样。

修改方案:在 gradlew jacocoTestReport 命令直接添加指定编码的参数,即改为 gradlew -Dfile.encoding=UTF-8 jacocoTestReport

陈恒捷 回复

感谢回复!亲测有效解决!由于没有使用 *gradle wrapper * 所以运行的gradle -Dfile.encoding=UTF-8 jacocoTestReport
一万个赞!!👍 👍

淼淼淼 关闭了讨论 05月16日 11:51
淼淼淼 重新开启了讨论 05月16日 11:52
淼淼淼 回复

哈哈,能解决你们的问题就好。我们当初也在这个问题上卡了 2-3 天,尝试了很多办法才解决的。

淼淼淼 关闭了讨论 05月25日 10:07
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册