eclipse插件coverlipse
coverlipse:[喜欢这种coverlipse,subclipse的插件名字,简单明了]
功能:负责显示JUnit测试的代码覆盖率。
安装:http://coverlipse.sourceforge.net/index.php 下载了coverlipse-0.9.5.3.zip,直接解压到eclipse目录中的相关文件夹(feature/plugin)。
使用:选择run as JUnit w/Coverlipse即可,也就是运行了JUnit
然后show view中,可以选择:
Coverlipse Markers View 看测试的覆盖率(行级的)
Coverlipse Class View 可以看到包级/类级的覆盖百分比
通过使用这个简单的小插件,可以看到JUnit对测试类、以及被测试类的覆盖率,不过比较怀疑在开发过程中能不能真正用起来,毕竟写出完善的UT case的情况还是很少的,可能不能对每一行代码都覆盖到。不过,对于一些重要业务逻辑处理的方法,用coverlipse来看test case对逻辑代码中分支的测试覆盖率还是比较有用的吧。
注:eclipse->window->customize perspective可以看到一些已经安装的插件。
我的工作经常会遇到这样的问题,统计自动化覆盖率,以前做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:通过这个页签可以知道被测类的测试覆盖率。如下图
小记:虽然coverlipse不能解决我的问题,但是对于自己知识点也是个补充,反正艺多不压身,还可以总结分享给更多的人,我觉得至少比浪费时间在家看电视来得强。需要说明的是coverlipse好像把测试类的代码覆盖都算进去了,好像是个小小的bug。