emma统计手工测试或Ui测试覆盖率

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cxq234843654/article/details/53302897

emma统计手工测试或Ui测试覆盖率

参考文章1
参考文章2

目的

统计一个app在手动测试或者UI测试过程中,这些测试对代码的覆盖率,需要有app的源码才能实现。
说明:本博文的教程仅仅针对eclipse的工程结构,如果是Android Studio的工程结构,建议使用Jacoco

一些假设:

**工程名:**MyEmma
**工程包名:**com.learn.myemma
**工程路径:**D:\DEV\workspace\MyEmma

1. 加入emma的文件
在工程的src目录下,新建包名emma.instrument,并将以下几个文件点击去下载复制到该包下:
a. EmmaInstrumentation
b. FinishListener
c. InstrumentedASctivity
d. SMSInstrumentedResceiver

放放进去的时候会报错,由于eclipse不会自动修改包名,修改这些文件的第一句“package net.sf.andbatdog.batterydog.EmmaInstrument”,为“package emma.instrument;”

此番操作后,EmmaInstrumentation和InstrumentedActivity依然会有错误,其实是同一个原因,InstrumentedActivity继承的类找不到,把类改成你的主Activity就好,extends MainActivity就OK了

2. 修改AndroidManifest文件

a. 在manifest节点下增加:

    <!-- add newly -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <instrumentation
        android:name="com.learn.myemma.emma.instrument.EmmaInstrumentation"
        android:handleProfiling="true"
        android:label="EmmaInstrumentation"
        android:targetPackage="com.learn.myemma" />
    <!-- add newly -->

b.在application节点下增加

        <!-- add newly -->
        <activity
            android:name="com.learn.myemma.emma.instrument.InstrumentedActivity"
            android:label="EmmaInstrumentationActivity" />

        <receiver android:name="com.learn.myemma.emma.instrument.SMSInstrumentedReceiver" >
            <intent-filter>
                <action android:name="edu.gatech.m3.emma.COLLECT_COVERAGE" />
            </intent-filter>
        </receiver>
        <!-- add newly -->

3. 确保工程可以运行
run as – Android Application

4. 使用ant命令编译apk,并安装到手机
- 先在工程(workspace目录)的外部,使用cmd命令更新工程,此番操后会在MyEmma目录下生成build.xml文件

    android update project -p ./MyEmma -n MyEmma -t 3
  • 进入到MyEmma文件下
    cd MyEmma
  • 构建apk
    ant instrument
  • 安装apk(先卸载已安装上去的)
    ant installi

5. 启动应用

    adb shell am instrument 包名/EmmaInstrumentation完整路径

6. 执行手动测试或则跑UI测试

7. 生成报告
- 新建一个文件夹,MyResult
- 将{$sdk}/tools/lib/emma.jar复制到MyResult
- 将设备上的/sdcard/coverage.ec复制到MyResult
- 将工程中/MyEmma/bin/coverage.em复制到MyResult
- 执行以下命令:

    java -cp emma.jar emma report -r html -in coverage.em,coverage.ec 

8.查看报告
在MyResult/coverage/index.html下查看覆盖率报告

猜你喜欢

转载自blog.csdn.net/cxq234843654/article/details/53302897