开始前崇拜一下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,即可查看运行期的覆盖率报表
就这么简单,不过要想实现自动收集并展示运行期覆盖率,还有一些工作要做
1 楼
alin_ass
2010-09-21
emma的问题在于开发人员已经不维护了,
存在乱码和改代码重启后测试数据很难持续集成.
淘宝目前通过2次开发解决了这些问题.
存在乱码和改代码重启后测试数据很难持续集成.
淘宝目前通过2次开发解决了这些问题.