- 浏览: 1125099 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
MyEyeOfJava:
产生问题的主要原因:1.方洪波与南枫公司的直接主管李琼在合作共 ...
人力资源管理案例-左右为难的经理 -
吾名长弓:
学习了,作为一个管理新手,从文章里学到了很多东西,感谢 ...
2018新年管理感言 -
MyEyeOfJava:
非常不错,看过很多文章,说到管理者必然不能抛弃技术,我的主张是 ...
IT行业技术部门人员架构设计 -
小灯笼:
JMeter测试从入门到精通网盘地址:https://pan. ...
LR与Jmeter相关资料 -
flying6071:
“(2)CERT.SF:这是对摘要的签名文件。对前一步生成的M ...
Android签名与认证详细分析之一(CERT.RSA剖析)
以下代码时监听测试程序结束后将Emma测试报告写入到虚拟机上,然后可以使用adb pull命令发送至硬盘上,这里需要测试程序集成Emma jar包,并需要修改ant build文件。
定义finish接口
修改ant build.xml文件
https://wiki.jenkins-ci.org/display/JENKINS/Building+an+Android+app+and+test+project
http://dtmilano.blogspot.com/search/label/android
package com.example.instrumentation; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import com.example.i2at.tc.TemperatureConverterActivity; //import com.vladium.emma.rt.RT; import android.app.Activity; import android.app.Instrumentation; import android.content.Intent; import android.os.Bundle; import android.os.Looper; import android.util.Log; public class EmmaInstrumentation extends Instrumentation implements FinishListener { private static final String TAG = "EmmaInstrumentation"; private static final boolean LOGD = true; private static final String DEFAULT_COVERAGE_FILE_PATH = "/mnt/sdcard/coverage.ec"; private final Bundle mResults = new Bundle(); private Intent mIntent; private boolean mCoverage = true; private String mCoverageFilePath; /** * Extends the AUT to provide the necessary behavior to invoke the * {@link FinishListener} that may have been provided using * {@link #setFinishListener(FinishListener)}. * * It's important to note that the original Activity has not been modified. * Also, the Activity must be declared in the * <code>AndroidManifest.xml</code> because it is started by an intent in * {@link EmmaInstrumentation#onStart()}. This turns more difficult to use * other methods like using template classes. This latter method could be * viable, but all Activity methods should be re-written to invoke the * template parameter class corresponding methods. * * @author diego * */ public static class InstrumentedActivity extends TemperatureConverterActivity { private FinishListener mListener; public void setFinishListener(FinishListener listener) { mListener = listener; } @Override public void finish() { if (LOGD) Log.d(TAG + ".InstrumentedActivity", "finish()"); super.finish(); if (mListener != null) { mListener.onActivityFinished(); } } } /** * Constructor */ public EmmaInstrumentation() { } @Override public void onCreate(Bundle arguments) { if (LOGD) Log.d(TAG, "onCreate(" + arguments + ")"); super.onCreate(arguments); if (arguments != null) { mCoverage = getBooleanArgument(arguments, "coverage"); mCoverageFilePath = arguments.getString("coverageFile"); } mIntent = new Intent(getTargetContext(), InstrumentedActivity.class); mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); start(); } @Override public void onStart() { if (LOGD) Log.d(TAG, "onStart()"); super.onStart(); Looper.prepare(); InstrumentedActivity activity = (InstrumentedActivity) startActivitySync(mIntent); activity.setFinishListener(this); } private boolean getBooleanArgument(Bundle arguments, String tag) { String tagString = arguments.getString(tag); return tagString != null && Boolean.parseBoolean(tagString); } private void generateCoverageReport() { if (LOGD) Log.d(TAG, "generateCoverageReport()"); java.io.File coverageFile = new java.io.File(getCoverageFilePath()); // We may use this if we want to avoid refecltion and we include // emma.jar // RT.dumpCoverageData(coverageFile, false, false); // Use reflection to call emma dump coverage method, to avoid // always statically compiling against emma jar try { Class<?> emmaRTClass = Class.forName("com.vladium.emma.rt.RT"); Method dumpCoverageMethod = emmaRTClass.getMethod( "dumpCoverageData", coverageFile.getClass(), boolean.class, boolean.class); dumpCoverageMethod.invoke(null, coverageFile, false, false); } catch (ClassNotFoundException e) { reportEmmaError("Is emma jar on classpath?", e); } catch (SecurityException e) { reportEmmaError(e); } catch (NoSuchMethodException e) { reportEmmaError(e); } catch (IllegalArgumentException e) { reportEmmaError(e); } catch (IllegalAccessException e) { reportEmmaError(e); } catch (InvocationTargetException e) { reportEmmaError(e); } } private String getCoverageFilePath() { if (mCoverageFilePath == null) { return DEFAULT_COVERAGE_FILE_PATH; } else { return mCoverageFilePath; } } private void reportEmmaError(Exception e) { reportEmmaError("", e); } private void reportEmmaError(String hint, Exception e) { String msg = "Failed to generate emma coverage. " + hint; Log.e(TAG, msg, e); mResults.putString(Instrumentation.REPORT_KEY_STREAMRESULT, "\nError: " + msg); } /* (non-Javadoc) * @see com.example.instrumentation.FinishListener#onActivityFinished() */ @Override public void onActivityFinished() { if (LOGD) Log.d(TAG, "onActivityFinished()"); if (mCoverage) { generateCoverageReport(); } finish(Activity.RESULT_OK, mResults); } }
定义finish接口
package com.example.instrumentation; /** * Listen for an Activity to finish and invokes {@link #onActivityFinished()} when this happens. * * @author diego * */ public interface FinishListener { /** * Invoked when the Activity finishes. */ void onActivityFinished(); }
修改ant build.xml文件
<!-- It only instruments class files, not any external libs --> <emma enabled="true"> <instr verbosity="${verbosity}" mode="overwrite" instrpath="${out.absolute.dir}/classes" outdir="${out.absolute.dir}/classes"> <!-- DTM: 2011-12-23: added filter for R --> <filter excludes="*.R" /> <filter excludes="*.R$*" /> </instr> <!-- TODO: exclusion filters on R*.class and allowing custom exclusion from user defined file --> </emma>
https://wiki.jenkins-ci.org/display/JENKINS/Building+an+Android+app+and+test+project
http://dtmilano.blogspot.com/search/label/android
发表评论
-
[ATC]Facebook开源弱网模拟工具
2016-03-26 14:24 2617需要注意如下:1.笔者使用了linux USB网卡,是让 ... -
【远程真机管理】openstf
2016-03-24 11:36 2885网站地址:https://github.com/ope ... -
AndroidStudio性能优化
2016-03-15 16:39 1103Android Studio慢、吃内存!启动时后会立即通过Gr ... -
Drozer使用手册
2016-01-18 15:22 2154Drozer ⼯具的安装与启动:源码地址(https:// ... -
TCPDUMP抓包
2015-12-17 20:56 705tcpdump 使用方法:唯有使用文章描述的参数移动手机的 ... -
HTML5安全
2015-10-30 19:43 1269移动安全问题汇总:htt ... -
Android插件DSL配置文档
2015-07-29 15:54 947Android Plugin DSL Reference -
Gradle-Android打包文档
2015-07-29 15:29 1745http://tools.android.com/tech- ... -
Android性能优化典范(一)
2015-06-02 17:26 12592015年伊始,Google发布 ... -
Android性能系列-电量篇
2015-05-29 16:28 1301电量篇 1) Understanding Battery ... -
Android性能系列-内存篇
2015-05-29 16:27 769内存篇 1) Memory, GC, and Perfor ... -
Android性能系列-运算篇
2015-05-29 16:26 537运算篇 1) Intro to Compute ... -
Android性能系列-渲染篇
2015-05-29 16:25 788Google近期在Udacity上发布了Android性能优 ... -
如何通过wifi在android手机上安装调试应用
2015-05-29 14:42 6531. 首先还是要打开手机 ... -
[Android]解决android65K方法引用限制
2015-01-14 11:39 1574解决方案如下: 1.Google官方的andr ... -
[Android]获取整体APP CPU信息
2015-01-07 14:34 4714通过proc获取CPU信息。adb shell cat / ... -
genymotion-安卓模拟器-IMEI修改方法
2015-01-05 15:44 4371看淘宝动辄就几十元卖这么个破玩意儿,实在是懒得说什么了,人总 ... -
[android]创建固定大小文件
2014-12-29 19:27 2154dd if=/dev/zero of=yourfile ... -
[总结]无线测试
2014-12-18 16:33 1085本文主要介绍测试在项目的各个阶段应该要做的事情、使用的工具和 ... -
[适配性]移动Webapp自适应方案
2014-12-18 16:15 1812此次方案的优化点 页面元素会随宽度的变化而自适应的放大 ...
相关推荐
用户代码覆盖率测试 ,开源可重写,对于产品质量控制非常重要
Emma进行代码覆盖率检查(命令行方式)
利用emma统计java代码覆盖率,可用于手工和自动测试的代码覆盖率,讲述了如何配置emma环境
EMMA是一个开源、面向Java程序测试覆盖率收集和报告工具。它通过对编译后的Java字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种报表格式对覆盖率结果进行展示。
博文链接:https://laorer.iteye.com/blog/123893
使用Emma测试Android程序覆盖率的一点总结,将来继续完善
java的单元测试,结合JUnit达到测试覆盖率的目的
有关代码覆盖率-EMMA.docx详细介绍文档
Emma测试覆盖率工具用法
北京火龙果软件工程技术中心 本文主要通过一个示例项目介绍如何在集成了Ant和Junit的基础上,利用EMMA来收集单元测试对代码的覆盖率。介绍测试代码覆盖率的重要性测试驱动开发(TDD)是极限编程的一个重要特点,它...
在测试过程中,使用EMMA能使收集和报告测试覆盖率的过程更加灵活、简单。在 测试覆盖率是评价测试完整性的重要的度量标准之一。EMMA是一个面向Java代码的测试覆盖率收集工具。在测试过程中,使用EMMA能使收集...
emma统计测试覆盖率 http://blog.csdn.net/cxq234843654/article/details/53302897
基于emma的测试覆盖率分析工具。swing界面,操作起来比较方便。可以对war包进行插桩,运行时根据需要可以取出覆盖信息并查看。需安装jdk运行。具体使用看chm。
EMMA 是一个用于检测和报告 JAVA 代码覆盖率的开源工具。它不但能很好的用于小型项目,很方便得得出覆盖率报告,而且适用于大型企业级别的项目。
三者结合,利用EMMA产生的测试覆盖度报考,可以一目了然的知道那部分代码已经被测试,哪部分没有,从而控制单元测试的质量。 EMMA,它是一个免费、开源的、用来衡量单元测试覆盖度的工具。 三者结合,利用EMMA...
分享简洁实用的免费的测代码覆盖的eclipse插件--eclemmaV1.3.2。插件安装时,我们只需在eclipse根目录下新建一个【links】目录,然后在里面创建【.link】扩展名的文件,在里面写上类似于【path=F:\\IDE\\...
测试覆盖率(Code Coverage) 测试覆盖率,简单的说,就是评价测试活动覆盖产品代码的指标。本PPT简单的描述了下代码覆盖如何实现和运用的。
asp代码asp自动化测试工具(源代码+论文)本资源系百度网盘分享地址