Eclipse插件終極攻略:測(cè)試插件
51CTO在前兩篇文章分別介紹了Eclipse插件基本概念介紹和安裝實(shí)例,這篇文章我們將介紹一下Eclipse插件的測(cè)試。這個(gè)系列都翻譯自日文《Eclipse 3.4 対応 Eclipse 3.4 プラグイン開発 徹底攻略》,做對(duì)日外包和對(duì)Eclipse插件使用的朋友都可以參考本系列文章,閑話少敘,我們先來對(duì)我們已經(jīng)安裝好的Eclipse插件進(jìn)行測(cè)試。
51CTO推薦專題:Eclipse平臺(tái)應(yīng)用與開發(fā)詳解
1. 使用JUnit對(duì)插件進(jìn)行測(cè)試
Eclipse中已經(jīng)嵌入了JUnit,我們可以使用JUnit為插件進(jìn)行單體測(cè)試。一般的JUnit是不可以對(duì)插件部分(對(duì)Eclipse的API依賴的部分)進(jìn)行測(cè)試的,但是在PDE環(huán)境中使利用JUnit對(duì)插件進(jìn)行單元測(cè)試成為可能。
要想進(jìn)行測(cè)試首先要添加插件的依賴關(guān)系,在插件設(shè)定頁(yè)面的[依賴關(guān)系(Dependencies)]頁(yè)面點(diǎn)擊[增加(Add)]按鈕,添加[org.junit(3.8.2)]作為必須插件(圖3-1)。
接下來,生成測(cè)試用例(TestCase)。測(cè)試用例和一般的JUnit用例相同,繼承junit.framework.TestCase。代碼1中的測(cè)試用例說明了,在工作臺(tái)頁(yè)面中打開一個(gè)視圖,并且確認(rèn)打開的視圖處于激活狀態(tài)。
代碼1 插件測(cè)試用例的示例
- public class SampleViewTest extends TestCase {
- public SampleViewTest(String name) throws Exception {
- //取得當(dāng)前活動(dòng)的頁(yè)面
- IWorkbench workbench = PlatformUI.getWorkbench();
- IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
- IWorkbenchPage page = window.getActivePage();
- //打開視圖
- page.showView("cn.sf.amateras.sample.views.SampleView");
- //確認(rèn)打開的視圖處于激活狀態(tài)
- IWorkbenchPart activePart = page.getActivePart();
- assertTrue(activePart instanceof IViewPart);
- assertEquals("cn.sf.amateras.sample.views.SampleView",
- activePart.getSite().getId());
- }
- }
當(dāng)前這個(gè)測(cè)試用例可以通過在測(cè)試類上點(diǎn)右鍵[執(zhí)行(Run As)]->[JUnit插件測(cè)試(JUnit Plug-in Test)]執(zhí)行。
#p#
2. 調(diào)試和錯(cuò)誤處理
調(diào)試插件
用調(diào)試模式啟動(dòng)運(yùn)行時(shí)工作臺(tái)后,像一般的java程序一樣,在程序中設(shè)置斷點(diǎn)就可以了。調(diào)試模式的啟動(dòng)可以從manifest編輯器的概要頁(yè)面,點(diǎn)擊[調(diào)試Eclipse應(yīng)用(Lunach an Eclipse Application in Debug mode)],或者點(diǎn)擊工具欄上的調(diào)試按鈕。
在錯(cuò)誤發(fā)生時(shí),需要做以下兩件事:
1)通知使用者
2)記錄日志
輸出日志
向Eclipse下的[.metadata]文件夾的[/.log]文件進(jìn)行日志輸出。輸出日志時(shí)使用org.eclipse.core.runtime.ILog接口,通過插件類獲得ILog接口的實(shí)例。如代碼2所示
代碼2 輸出日志
- ILog log = Activator.getDefault().getLog();
- log.log(new Status(IStatus.OK, Activator.PLUGIN_ID,
- 0, "正常消息", null));
- log.log(new Status(IStatus.OK, Activator.PLUGIN_ID,
- 0, "異常消息", new Exception("輸出日志的異常")));
Status對(duì)象的構(gòu)造函數(shù)的參數(shù)如表1所示。
表1 Status的構(gòu)造參數(shù)
參數(shù) | 說明 |
int severty | 重要度。候選值有IStatus.OK、IStatus.ERROR、IStatus.INFO、IStatus.WARNING、IStatus.CANCEL。 |
String pluginId | 插件的ID |
int code | 插件固定的消息code,或者是IStatus.OK。 |
String message | 輸出日志的消息。 |
Throwable exception | 輸出日志的異常。沒有時(shí)候添null。 |
錯(cuò)誤通知
錯(cuò)誤發(fā)生后通知使用者的方法有很多,最簡(jiǎn)單的方法就是使用JFace的org.eclipse.jface.dialogs.ErrorDialog類。
代碼3 使用ErrorDialog
- try{
- //....
- }catch(Exception e){
- IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID,
- 0, e.toString(), e);
- ErrorDialog.openError(window.getShell(), "錯(cuò)誤", "插件出錯(cuò)了!", status);
- }
運(yùn)行時(shí)工作臺(tái)啟動(dòng)時(shí)的參數(shù)
Eclipse是由很多的插件構(gòu)成的,在其背后運(yùn)行著非常復(fù)雜的處理,所以也需要相應(yīng)的內(nèi)存。特別是,很多的插件在加載龐大的類時(shí),就很容易出現(xiàn)VM常駐(permanent)區(qū)域的不足的情況。
通常,Eclipse使用的堆(Heap)區(qū)和常駐區(qū)的大小可以通過Eclipse安裝目錄下的eclipse.ini文件進(jìn)行設(shè)定。
代碼4 默認(rèn)的eclipse.ini文件
- -showsplash
- org.eclipse.platform
- --launcher.XXMaxPermSize
- 256m
- --launcher.defaultAction
- openFile
- -vmargs
- -Dosgi.requiredJavaVersion=1.5
- -Xms40m
- -Xmx512m
在插件開發(fā)過程中如果出現(xiàn)內(nèi)存空間不足的時(shí)候,也可以通過[運(yùn)行(Run)]->[運(yùn)行設(shè)定(Run Configurations)]窗口的[參數(shù)]tab頁(yè)中的[VM參數(shù)]項(xiàng)來指定空間的大小。
【編輯推薦】