歡迎訪問 中國軟件工程網 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。