我的
工作经常会遇到这样的问题,统计自动化覆盖率,以前做windows的程序可以用ibm的Codecover来实现这种功能,但是对于
互联网应用服务器端代码覆盖率的统计一直没有找到好的方法,前阵子听说了coerlipse,今天就预研了一下,虽然没有达到我的目的(无法实现对远程服务器端代码覆盖率的统计,只能完成本地做
单元测试的覆盖率统计)。但是还是把
学习过程记录一下,说不定以后有用哦。
首先,需要到http://coverlipse.sourceforge.net/download.php下载插件,该网站提供两种方式,一种是通过eclipse更新插件地址去更新他的插件,一种是将插件先下载过来手工安装。
手工安装的方法,自然和其他安装插件方法一样,完成如下三步:
一,解压插件包,关闭eclipse程序。
二,将插件包中的plugin目录下的文件拷贝到你eclipse安装目录下的plugin目录下;把features下的xml文件拷贝到你elipse安装路径的features目录下。
三,启动eclipse,点击help->abaout Eclipse platform属性页,可以通过plugin-detail查看你的插件是否被安装成功了。
现在我们要做单元测试的简单实验了,当然我们首先要新建一个被测工程,一个被测类,一个测试类。在本例子中分别命名如下
测试工程:Mytest。由于是单元测试工具通常测试工程和被测工程在同一个工程中。根据我对coverlipse的简单研究,似乎也必须在同一个工程内。
被测试类: helloworld
被测代码如下:
01 package testp; 02 03 public class helloworld { 04 public String SayHelloWorld(String a) 05 { 06 if (a !="") 07 { 08 return a + " helloworld"; 09 } 10 else 11 { 12 return "please input username"; 13 } 14 } 15 } |
测试类:testhelloworld
测试类代码如下:
1 public class testhelloworld extends TestCase { 2 @Test 3 public void testCase1() throws Exception 4 { 5 helloworld hw = new helloworld(); 6 String rs = hw.SayHelloWorld("elbert"); 7 org.junit.Assert.assertEquals("elbert helloworld", rs); 8 } 9 } |
我们可以通过两种途径来测试覆盖率。一种最简洁的方法,选中junit的测试类,右键点击,选择Run as->w/coverlipse,如下图
也可以通过在Run dialog上面的设置来设置测试类和被测试类。如下图
最后我们要查看代码覆盖率了,coverlipse通过两个页签来显示结果
1.coverlipse marks view:通过这个页签会告诉测试者,被测类中哪些代码行被测试,那些代码行没有被测试。由于例子中的被测类的第12行不会被执行,所以报告结果如下图。
2.coverlipse class view:通过这个页签可以知道被测类的测试覆盖率。如下图