在Eclipse插件(Plugin)開發(fā)中,需要寫一些Test Case(by JUnit),這些Test Case不是以插件方法運(yùn)行的,而是一些普通的Application。這時(shí)要注意到插件和App獲取路徑的方式是不同的,這時(shí)如果你要測(cè)試一些項(xiàng)目中的一些涉及到讀文件的一些類,無疑會(huì)導(dǎo)致出錯(cuò)。為了讓Plugin和App路徑獲取透明化,不防寫一個(gè)工具類來提供統(tǒng)一的路徑獲取方法,示例類如下所示:
這個(gè)思路也可以擴(kuò)展到Plugin和App不一樣的地方,這樣寫起Test Case就方便多了。
說明:示例中的AdminConsolePlugin類就是創(chuàng)建插件項(xiàng)目自動(dòng)生成的那個(gè)類,你的項(xiàng)目也許叫“項(xiàng)目名+Plugin”
import?java.io.IOException;
import?java.io.InputStream;
import?java.net.MalformedURLException;
import?java.net.URL;
import?org.eclipse.core.runtime.Path;
import?org.eclipse.ui.plugin.AbstractUIPlugin;
import?com.wxxr.management.admin.console.AdminConsolePlugin;
/**
?*?用于插件項(xiàng)目和非插件項(xiàng)目,提供兩者通用的方法接口
?*?@author?chengang?2006-3-30
?*/
public?class?ProjectUtil?{
????private?static?AbstractUIPlugin?plugin?=?AdminConsolePlugin.getDefault();
????private?ProjectUtil()?{}
????/**
?????*?判斷當(dāng)前的運(yùn)行狀態(tài)是否為插件方式
?????*?@return?true=插件方式運(yùn)行
?????*/
????private?static?boolean?isPlugin()?{
????????return?plugin?!=?null;
????}
????public?static?URL?getURL(String?path)?{
????????if?(isPlugin())//如果是插件
????????????//return?plugin.find(new?Path(path));
??????????? return?FileLocator.find(plugin.getBundle(), new?Path(path), null);??? //陳剛修改于2006-8-24,eclipse3.2已經(jīng)建議用此方法
????????else
????????????try?{
????????????????return?new?URL("file:"?+?path);
????????????}?catch?(MalformedURLException?e)?{
????????????????throw?new?RuntimeException(path?+?"?is?error",?e);
????????????}
????}
????public?static?InputStream?getInputStream(String?path)?{
????????URL?url?=?getURL(path);
????????try?{
????????????return?url.openStream();
????????}?catch?(IOException?e)?{
????????????throw?new?RuntimeException(e);
????????}
????}
}