使用emma收集webapp运行期代码覆盖率

本文介绍了一个用于JBoss项目的脚本,该脚本利用Emma工具自动化完成覆盖率测试过程,包括打包部署、覆盖率数据收集及远程下载分析等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始前崇拜一下emma作者,这么牛的项目都不继续下去,文档也写的如此难懂.


好,开始正文:
1.修改测试机jboss项目打包脚本

#!/bin/sh
BASE_HOME=/home/admin/work
SRC_HOME=$BASE_HOME/top
TARGET_HOME=$BASE_HOME/top/top-webapp/target
COPY_HOME=/home/admin/top/target
LIB_HOME=/home/admin/top/lib
LOG_HOME=/home/admin/top/logs
PATH=/opt/taobao/mvn1/bin:$PATH
JAVA_HOME=/opt/taobao/java1
export PATH
export JAVA_HOME
cd $SRC_HOME
svn up
mvn clean package -U -Dmaven.test.skip=true -DfailIfNoTests=false

rm -rf $COPY_HOME/*
cp -r $TARGET_HOME/top $COPY_HOME/top.war
cd $LOG_HOME/
for i in `ls $COPY_HOME/top.war/WEB-INF/lib/top-*.jar`
do $JAVA_HOME/bin/java -cp $LIB_HOME/emma.jar emma instr -m overwrite -cp $i
done
cp $LIB_HOME/emma.jar $COPY_HOME/top.war/WEB-INF/lib/

cd $COPY_HOME/
tar zcf top.tgz top.war
cd $HOME/top/bin

echo "Now stoping JBoss................."

killall -9 java

sleep 5

echo "Now starting JBoss................."

./jbossctl restart

注意这段

for i in `ls $COPY_HOME/top.war/WEB-INF/lib/top-*.jar`
do $JAVA_HOME/bin/java -cp $LIB_HOME/emma.jar emma instr -m overwrite -cp $i
done
cp $LIB_HOME/emma.jar $COPY_HOME/top.war/WEB-INF/lib/

ps:
这时会在$LOG_HOME下生成一个coverage.em文件, 你可以拷贝回本地分析用,或者本地也用类似脚本生成该文件.
emma.jar必须是2.1,最新的是2.1.5320,否则没有后面的远程获取覆盖率数据的tcl命令

2.远程下载覆盖率文件

D:\alin>java -cp emma.jar emma ctl -connect 192.168.207.107:47653 -command cover
age.get,coverage.ec

D:\alin>java -cp emma.jar emma report -r html -in coverage.em,coverage.ec -sourcepath d:\workspace\top

ps:
这里代码库直接指定工程目录,但是emma可能无法识别目录内子项目内的源代码
本地的coverage.em必须和服务器上的执行代码保持一致

3.打开生成的coverage/index.html,即可查看运行期的覆盖率报表

就这么简单,不过要想实现自动收集并展示运行期覆盖率,还有一些工作要做
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值