android - 通过更改 build.xml 和 ant.properties 生成 Android 代码覆盖率

标签 android build code-coverage emma

我一直在尝试为我的 android 测试项目生成 android 代码覆盖率,该项目测试包含外部 jar 的 android 项目。当我运行命令时

ant emma 安装调试测试

它仅显示了 android 项目的覆盖范围,但不包括外部 jar 的包和功能。 根据我的研究,我发现应该在 ant.properties 文件和 build.xml 中的 emma report tag 中进行一些更改。

非常欢迎任何建议。

[编辑]

在进一步的研究中,我浏览了一个博客,上面写着输入变量

tested.android.library.source.dir="path to external jars" in ant.properties

并且应在报告源路径中添加相同的变量

<emma>
                    <report sourcepath="${tested.project.source.absolute.dir}:${tested.project.lib.source.path.value}:${tested.android.library.source.dir}" verbosity="${verbosity}">
                        <!-- TODO: report.dir or something like should be introduced if necessary -->
                        <infileset file="${out.absolute.dir}/coverage.ec" />
                        <infileset file="${tested.project.out.absolute.dir}/coverage.em" />
                        <!-- TODO: reports in other, indicated by user formats -->
                        <html outfile="${out.absolute.dir}/coverage.html" />
                   </report>
  </emma>

但覆盖范围仍然没有显示外部 jar 的功能和包。

我想知道我的 jar 不在 android 测试项目中,而是在测试的 android 项目中。那么如何在测试项目的 ant.properties 中为这些外部 jar 提供路径。

最佳答案

我也一直在做同样的事情。 引用code coverage reports for library projects

ADT-r20 中支持外部 jar 覆盖。 我只能指出我正在努力的方向。 我正在修改 ant 内的 build.xml :

 <!-- This is macro that enable passing variable list of external jar files to ApkBuilder
     Example of use:
     <package-helper>
         <extra-jars>
            <jarfolder path="my_jars" />
            <jarfile path="foo/bar.jar" />
            <jarfolder path="your_jars" />
         </extra-jars>
     </package-helper> -->
<macrodef name="package-helper">
    <element name="extra-jars" optional="yes" />
    <sequential>
        <apkbuilder
                outfolder="${out.absolute.dir}"
                resourcefile="${resource.package.file.name}"
                apkfilepath="${out.packaged.file}"
                debugpackaging="${build.is.packaging.debug}"
                debugsigning="${build.is.signing.debug}"
                verbose="${verbose}"
                hascode="${manifest.hasCode}"
                previousBuildType="${build.last.is.packaging.debug}/${build.last.is.signing.debug}"
                buildType="${build.is.packaging.debug}/${build.is.signing.debug}">
            <dex path="${intermediate.dex.file}"/>
            <sourcefolder path="${source.absolute.dir}"/>
            <jarfile refid="project.all.jars.path" />
            <nativefolder path="${native.libs.absolute.dir}" />
            <nativefolder refid="project.library.native.folder.path" />
            <extra-jars/>
        </apkbuilder>
    </sequential>
</macrodef>

我还没有运气。

关于android - 通过更改 build.xml 和 ant.properties 生成 Android 代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13466482/

相关文章:

android - 如何使用 AChartEngine 将图表高度设置为接近底部?

android - 将经过训练的 Tensorflow 模型转换为 protobuf

android - 无法将 fragment View 切换到主视图

properties - 在 Gradle 构建脚本中访问 Teamcity 构建号

PHPstorm PHPunit 代码共同覆盖

android - 保持连接有效?

vim - 在vim中设置一个 "build directory"?

android - com.android.ide.common.process.ProcessException : Failed to execute aapt! 我该怎么办?

ios - 同一个方案,为什么faSTLane xcov的代码覆盖率值和Xcode的值不一样?

java - 如何使用 Java 7 和 spring-instrument 运行 Jacoco?