很久以前听到过code coverage这个词。但总是在我脑海中一闪而过,Ignore掉的。
最近看到有一个opensource 的 EMMA,所以就Down下来玩玩。
看了它的Quick Start发现可以配合JUnit之类的测试工具执行GUI程序。
把它自带的程序试了一下,它会产生记录显示刚才的操作执行了多少多少部分的代码。
觉得蛮好玩的,就自己试了一下:
环境: EMMA v2.0,build4127
OS Windows 2003 server
JDK v1.4.2
EMMA提供两种使用模式,一个是指令模式(command mode)另外一个是使用Ant。
将下载下来的JAR(emma.jar&emma_ant.jar)复制到你classpath所在的JRE目录
ex.E:\Program\J2SDK\jre\lib\ext
然后在命令行下输入Java emmarun,会看到它的使用方法和如何配参数。如果没看到,那
说明没有把刚才两个Jar包放在classpath中。
随后写一个Hello world程序
1public class HelloWorld {
2 public HelloWorld() {
3 System.out.println("Constructor");
4 }
5 public static void main(String[] args) {
6 new HelloWorld();
7 System.out.println("Hello World!");
8 }
9}
编译HelloWorld.java
javac -d classes -g HelloWorld.java
运行HelloWorld
java -cp classes HelloWorld
现在加入EMMA
java emmarun -cp classes HelloWorld
可看到类似如下输出:
Constructor
Hello World!
EMMA: writing [txt] report to [F:\我的文档\EMMA\coverage.txt] ...
你可以看一下执行后在你目录中的coverage。txt文件
内容类似如下:
[EMMA v2.0.4217 report, generated Thu Oct 28 09:09:45 CST 2004]
-------------------------------------------------------------------------------
OVERALL COVERAGE SUMMARY:
[class, %] [method, %] [block, %] [line, %] [name]
100% (1/1) 100% (2/2) 100% (14/14) 100% (6/6) all classes
OVERALL STATS SUMMARY:
total packages: 1
total classes: 1
total methods: 2
total executable files: 1
total executable lines: 6
COVERAGE BREAKDOWN BY PACKAGE:
[class, %] [method, %] [block, %] [line, %] [name]
100% (1/1) 100% (2/2) 100% (14/14) 100% (6/6) default package
-------------------------------------------------------------------------------
这些数据蛮难看懂的,不过EMMA提供三种输出格式 txt,html,xml
接下来看看可以加入原代码的一份html报表。
这样来执行:
java emmarun -r html -sp . -cp classes HelloWorld
//-sp 代表源文件的所在地,我的源文件在当前目录,故用 "."
执行后你就可以看到EMMA生成了一个叫coverage的目录。在里面的许多html就是带源文件的一份报表。如下所示:
这份东西还是蛮详细的,可以看到那些东西或者说那些状况没有考虑到的。
至于ant的实现以后要用时在说吧!毕竟这东西好玩归好玩,暂时还用不上。^_^