获取Android代码测试覆盖率详解

Pre

假定APK所在包为net.clasnake.project,工程主目录为/folder

Step 1 插桩

首先下载EmmaInstrument.rar,解压后包含四个文件:

  • EmmaInsrumentation.java
  • FinishListener.java
  • InstrumentedActivity.java
  • SMSInstrumentedReceiver.java

将文件夹EmmaInstrument复制到/folder/src下。 将上述四个java文件的包名修改为net.clasnake.project.EmmaInstrument,并令InstrumentedActivity继承自项目的主Activity。 然后修改AndroidManifest.xml加入SMSInstrumentedReceiverEmmaInstrumentationActivity

<receiver android:name="net.clasnake.project.EmmaInstrument.SMSInstrumentedReceiver">
    <intent-filter>
        <action android:name="edu.gatech.m3.emma.COLLECT_COVERAGE"/>
    </intent-filter>
</receiver>
<activity android:label="EmmaInstrumentationActivity" android:name="net.clasnake.project.EmmaInstrument.InstrumentedActivity"/>

加入插桩标签,并允许写SD卡权限:

<instrumentation android:handleProfiling="true" android:label="EmmaInstrumentation" android:name="net.clasnake.project.EmmaInstrument.EmmaInstrumentation" android:targetPackage="net.clasnake.project"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Step 2 重编译、安装

连接设备至adb,首先android update project更新项目,生成build.xml,以便使用ant。

然后编译插桩版本:ant instrument

安装:ant installi

Step 3 测试

启动插桩版本: adb shell am instrument net.clasnake.project/net.clasnake.project.EmmaInstrument.EmmaInstrumentation

进行测试,结束后使用后退键退出应用。

从设备中得到coverage.ec:adb pull /mnt/sdcard/coverage.ec

从/folder/bin中得到coverage.em,该文件中包含了待测APP的结构信息,将其与coverage.ec放置同一目录下,然后生成覆盖率报告:

java -cp ~/adt/sdk/tools/lib/emma.jar emma report -r html -in coverage.em,coverage.ec

在同目录下的coverage文件夹下生成覆盖率报告:

drawing

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值