用jenkins进行android测试代码的coverage,生成出来bin里的coverage report中,代码文件中日文全是乱码,导致了coverage的显示也不太清楚,文件代码一长,根本无法知道哪些没有覆盖到。在网上找了一下午。最终解决。
最初是怀疑jenkins的设置。尝试了下面几项。都失败。
- build.xml中,设置report文件输出的编码。<property name="report.html.out.encoding" value="UTF-8" />
- 设置jenkins的起动参数。-Dfile.encoding=UTF-8 这里试了半天,最终是在tomcat的起动文件中设置成功
后来想直接在cmd中运行ant命令,结果还是同样的问题。说明跟jenkins无关。
最终解决办法,修改emma的源代码。 从网上下载下emma-2.0.5312-src.zip 修改下面的文件。编译打包,
- 从网上下载下emma-2.0.5312-src.zip http://pkgs.fedoraproject.org/repo/pkgs/emma/
- 修改core\java12\com\vladium\emma\report\html\ReportGenerator.java的embedSrcFile方法
修改前
in = new BufferedReader (new FileReader (srcFile), IO_BUF_SIZE);
修改后
java.io.InputStreamReader isr = new java.io.InputStreamReader(new java.io.FileInputStream(srcFile), m_settings.getOutEncoding ());
in = new BufferedReader (isr, IO_BUF_SIZE);
重新打包后,替换掉android-sdk\tools\lib 里的两个emma的jar文件。之后就OK了