欢迎访问 中国软件工程网 http://www.rjgc.net
MILY: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我的工作经常会遇到这样的问题,统计自动化覆盖率,以前做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。