很久以前听到过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就是带源文件的一份报表。如下所示:

t_o_1.jpg

t_o_2.jpg


这份东西还是蛮详细的,可以看到那些东西或者说那些状况没有考虑到的。
至于ant的实现以后要用时在说吧!毕竟这东西好玩归好玩,暂时还用不上。^_^