Emma测试覆盖率收集入门.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Emma测试覆盖率收集入门

1. EMMA 介绍EMMA 是一个开源、面向 Java 程序测试覆盖率收集和报告工具。它通过对编译后的 Java 字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种报表格式对覆盖率结果进行展示。EMMA可以统计几种覆盖率:class,method,block, line。支持版本迭代的覆盖率统计2. EMMA 使用EMMA基本是四步曲:插桩(instr),运行,收集(ctl),报告(report)。下面分别详细的介绍下2.1 安装下载地址:/projects/emma/files/emma-testing/目前流行使用的是v2.1.*,因为支持ctl命令将emm.jar cp /usr/local/jdk/jre/lib/ext 下面,安装完成2.2 插桩command:java emma instr -cp /usr/local//anrs/lib/anrs.jar -m overwrite -ix +com.* -Dmetadata.out.file=test.em参数介绍:-cp,指定插桩的路径,多个jar包可以用,分割-m:输出模式???? overwrite:重新jar包,anrs.jar???? default:copy, 需要加上-d参数,指定输出路径。有插桩,才cp一份class到指定路径???? fullcopy:需要加上-d参数,指定输出路径。不管有没有插桩,都cp一份class到指定路径-merge:合并。??? default:yes。如果metadata指定输出的文件一样,将两次插桩信息进行合并??? no。不合并两次插桩信息-ix:指定需要插桩的class?? +com.*: + 指包含?? -com.*:-指排除? 支持多个+和-,用逗号分隔这个功能对我们关注被改动的代码很有作用-Dmetadata.out.file: 指定元数据(metadata)输出路径。默认是当前路径我们在测试过程中,一般都会去更新几次jar包,并且我们希望统计出这个版本测试的覆盖率,我们就需要把几次的元数据进行合并2.3 运行一般情况下,直接运行应用程序即可。EMMA会启动一个监听端口,用来后面收集信息(ctl)。这个端口是固定的,47653。如果我们的应用是多进程的,就会出现启动失败。其实EMMA也提供了一个命令,进行端口设置:-Demma.rt.control.port=39123还有host指定,-Demma.rt.control.host=2. default is localhost这个参数需要加在程序启动命令里EMMA还有简单的配置文件:java -Dperties=perties format: tag=value可以配置的参数参考:/reference/ch03s02.html#prop-ref.tables?2.4 收集一般有两种收集信息方法:1. 程序退出,自动收集,在当前运行目录下生成coverage.ec2. 命令行:java -cp /usr/jdk/jdk1.6.0_23/jre/lib/ext/emma.jar emma ctl -connect localhost:47653 -command coverage.get,coverage.ec?合并.ec文件由于 EMMA 中测试覆盖率是通过与“*.em”文件关联获得代码信息的,因此当代码发生变化时,已经运行过的测试不必完全重复,只需将得到的“*.ec”文件合并(新得到的“*.ec”文件放在后面),然后关联必威体育精装版的“*.em”文件即可得到代码变化后的覆盖率信息,这方便了 EMMA 支持版本变化的测试。在生成新的测试报告的时候,需要注意“*.ec”的时间一定要晚于“*.em”文件。1. 自动合并。如果生成的.ec文件名字相同,自动合并。2. 命令行合并:java? -cp /usr/jdk/jdk1.6.0_23/jre/lib/ext/emma.jar emma merge -input SM1.ec, SM2.ec -outfile SM.ec.ec 文件需要按照时间从前到后排列,才能保证合并信息正确(参考网上说法。但我测试的结果发现,自动合并与merge合并的结果不一致,自动合并的结果更准确。所以最好使用自动合并)默认合并为coverage.es。貌似现在的版本outfile参数不起作用,都会合并为coverage.es?清除执行统计信息如果我们想要每个测试用例的独立覆盖率报告,需要将内存中的执行信息清除掉。目前有两种清除方法:1. 重启应用2. 命令行:resetjava? -cp /usr/jdk/jdk1.6.0_23/jre/lib/ext/emma.jar emma ctl -connect localhost:

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档