在做單元測試時,jMock可以非常方便的構建出mock對象,大大提高寫test case的時間。本文就談談如何在RCP開發中使用jMock做單元測試。
1. 匯入jMock包
在Eclipse RCP開發,因為包之間的依賴是通過OSGi的完成的,所以要複雜一些。就好像jUnit就被做成了Eclipse下的一個Plugin, 所以我也同樣使用屢試不爽的"Plug-in from existing JAR archives"。
- 從jMock的網站上下載所有的jar packages(http://www.jmock.org/download.html).
- 進入Eclipse,選擇New Project->Plug-in development->Plug-in from existing JAR archives. 然後選擇"Add External...", 選中所有的Jar檔案後,點擊Next。然後輸入Project Name之類的東西(我一般不選中"Unzip the JAR archives into project",嫌unzip之後的檔案太多了。)然後"Finish",新的jMock plugin就產生了。
2. 使用jMock寫測試
下面我們就可以使用產生好的jMock Plugin寫測試了。
首先我們先構建一個新的plugin工程,在裡面的我們會寫所有的測試案例。這點我相信學RCP的朋友都知道,省略。(在我的一些實踐中,這種test工程最好以fragment的形式,這樣不但可以有效隔離測試代碼,還可以方便測試代碼使用被測代碼,這個問題以後再表)。
工程建好後,我們首先要修改它的MANIFEST.MF檔案,加入相關的plugin. 主要加入兩個plugin, 一個是junit, 另一個是我們剛產生的,如:
圖中那個叫XX.testutil的plugin就包含了jmock。 這裡請大家特別注意
,junit4的plugin一定要放在list的最後一個,至少要比jmock靠後。如若不然,運行時會有錯誤的。
好了,下面就請你寫個測試來試試吧。