问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java web怎么用emma进行代码覆盖率测试

发布网友 发布时间:2022-05-12 06:36

我来回答

1个回答

热心网友 时间:2024-02-18 22:04

使用 emma 2.1 (emma-stable-2.1.5320-lib) 1. 新建 /home/q/java/emmalib 目录, 将emma.jar 与 emma_ant.jar 放入 2. 复制 /server/bin/mobileserver/runServer.sh 到 runServer_emma.sh 修改启动语句。
   使用 emma 2.1 (emma-stable-2.1.5320-lib)
   1. 新建 /home/q/java/emmalib 目录, 将emma.jar 与 emma_ant.jar 放入
   2. 复制 /server/bin/mobileserver/runServer.sh 到 runServer_emma.sh
   修改启动语句
   nohup java -Xmx1800M -Xms800m -Xbootclasspath/p:/home/q/java/emmalib/emma.jar -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider -XX:+AggressiveOpts -XX:+UseParallelGC -server -classpath "$jarFile" com.qunar.common.mobileArc.MobileServer conf/TaLog.property conf/TripServer.property >> $LOG_HOME/error.log 2>&1 &
   复制 /server/bin/mobileserver/stopServer.sh 到 stopServer_emma.sh
   添加覆盖率导出命令
   插入 emma 统计代码
   使用root账号
   1. 备份mobileserver.jar
   cp /server/TripAssistant/mobile-server.jar $MOB_JAR_BAK/mobile-server.jar.{$timestamp}
   2. 执行插入命令
   java -cp /home/q/java/emmalib/emma.jar emma instr -m overwrite -cp mobile-server.jar -out coverage.em
   输出如下:
   EMMA: processing instrumentation path ...
   EMMA: instrumentation path processed in 3117 ms
   EMMA: [1000 class(es) instrumented, 126 resource(s) copied]
   EMMA: metadata merged into [/server/TripAssistant/coverage.em]
  3. 运行mobileserver runServer_emma.sh
   sudo sh /server/bin/mobileserver/stopServer.sh && sudo sh /server/bin/mobileserver/runServer_emma.sh
   在 /server/mobileserverlog/error.log中可见:
   EMMA: collecting runtime coverage data ...
   EMMA: runtime controller started on port [47653]
   emma control 进程已启动
  [root@l-wap4.beta.cn1.qunar.com /server/mobileserverlog]# netstat -na | grep 47653
  tcp 0 0 0.0.0.0:47653 0.0.0.0:* LISTEN 20926/java
  4. 执行 覆盖率文件导出命令
  java -cp /home/q/java/emmalib/emma.jar emma ctl -connect localhost:47653 -command coverage.get,coverage.ec
   可见输出:
   EMMA: processing control command sequence ...
   EMMA: executing [coverage.get (coverage.ec,true,true)] ...
   EMMA: coverage.get: local copy of coverage data merged into [/server/TripAssistant/coverage.ec]
   EMMA: coverage.get: command completed in 79 ms
   EMMA: control command sequence complete

   并且当前目录生成文件 coverage.ec
  5. 生成报告
  java -cp /home/q/java/emmalib/emma.jar emma report -r html -in coverage.em,coverage.ec
  指定源代码生产覆盖率报告(需先上传源码)
   java -cp /home/q/java/emmalib/emma.jar emma report -r html -in /server/TripAssistant/coverage.em,/server/TripAssistant/coverage.ec -Dreport.html.out.file=mycoverage/coverage.html -sp /home/liang.zhou/mob_code_dir/mobs_trunk/src/main/java
  emma 方式启动 mobserver
   ==================================
   1. 判断mobserver.jar size, 大于5M 为已插入过, 小于5M为未插入(需要执行插入)
   2. 执行插入
   3. 启动
  4. 检查启动状态
  47653 端口打开
   mobileserver 进程打开
  emma 方式停止 mobserver
  ==================================
   1. 检查47653端口打开状态, 检查coverage.em是否存在
   2. 导出覆盖率文件 coverage.ec, 备份coverage.em (加上时间戳)
   3. 导出覆盖率HTML report (加上对应时间戳)
   4. kill mobserver 进程
   ls -lt mobile-server.jar
   判断 $? == 0
  判断mobile-server.jar size是否大于 5M
  #!/bin/bash
   function stop_mob_server(){
   #!/bin/bash
   function stop_mob_server(){
   pid=`ps aux | grep MobileServer | grep -v grep | awk '
   Unknown macro: {print $2}
   '`
   ` kill -9 $
   Unknown macro: {pid}
   `
   sleep 1
   echo "Stop mobileserver success."
   }
   #判断 emma ctl 是否启动
   port_check_result=`netstat -na | grep 47653 | awk '
   Unknown macro: {print $1}
   '`
   if [ -z $
   Unknown macro: {port_check_result}
   ]; then
  echo "Emma ctl port 47653 is not LISTEN. Coverage.ec export operation aborted."
   else
   #emma ctl 为启动状态,导出 coverage.ec, 并备份至 /home/q/mobsrv_cov
   if []
   fi
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 如果3.0版本怎么分屏? 华为nova7se可以分屏到宝马3系吗? 宝马3系倒车影像怎样分屏 双门冰箱后背下部怎么清理 男生网名两个字古风 tcl电视b32e650是什么软件 为什么我家的TCLB32E650有内置wifi,但是却只有几部在线影片,不能像电脑一样上网” tcl电视机L32F3350E底座B32E650一样吗? tcl电视b32e650电视有开关电源吗? tclb32e650能查找到wifi,就是连不上 红警2两台电脑怎么联网玩,请指教,具体怎么做,谢谢! tclb32e650怎么安装电视应用程序 刚买的tclb32e650电视怎么看不了网络电视呢???求解答!!! tclb32e650屏暗怎么办图象正常,整个屏幕显示也正常,就是亮度调不光 我的TCL b32e650无线网络连接成功,但是不能上网,我该怎么操作? 你好,请问TCL电视 B32E650 与 B32E680 有什么区别那?感谢 tcl b32e650 电视可以当电脑屏幕吗? TCL B32E650型号的电视能连接网络吗 TCLB32E650怎么样?TCLB32E650好吗 TCLb32e650这个型号的电视支持HDCP协议吗?可以接ps4吗? jacoco.exec文件是干什么 蝴蝶工具可以检测java代码执行覆盖率么 宝马w3系在导航地图里面可以设置自己的兴趣点吗? JAVA 编写实现方法的重载和覆盖 一个java文件中方法的多少影响速度么 java中junit4测试怎么看覆盖率 我是怀远户口,在淮南泰康买的商业养老保险,并在淮南有5年以上� 去淮南泰康人寿怎么走,途经哪些站 泰康人寿淮南公司的联系电话是多少? java中的覆盖是什么意思,谁能写个简单的代码 举例解释下 在淮南买的泰康人寿在凤台可能退 java 的重载和覆盖 Java编译器如何生成重载和覆盖方法代码 淮南洞山泰康人寿在哪里中国移动附近 描写大海景象的语句有哪些? java代码通过for循环向list存数据,如何避免数据被覆盖 java语言中的内部类可以覆盖吗 日月之行,若出其中,星汉灿烂.若出其里 描绘了大海怎样的景象? 淮南人寿保险哪里有 淮南菜家岗有几家保险公司?