在Eclipse插件(Plugin)开发中,需要写一些Test Case(by JUnit),这些Test Case不是以插件方法运行的,而是一些普通的Application。这时要注意到插件和App获取路径的方式是不同的,这时如果你要测试一些项目中的一些涉及到读文件的一些类,无疑会导致出错。为了让Plugin和App路径获取透明化,不防写一个工具类来提供统一的路径获取方法,示例类如下所示:
这个思路也可以扩展到Plugin和App不一样的地方,这样写起Test Case就方便多了。
说明:示例中的AdminConsolePlugin类就是创建插件项目自动生成的那个类,你的项目也许叫“项目名+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;
/**
* 用于插件项目和非插件项目,提供两者通用的方法接口
* @author chengang 2006-3-30
*/
public class ProjectUtil {
private static AbstractUIPlugin plugin = AdminConsolePlugin.getDefault();
private ProjectUtil() {}
/**
* 判断当前的运行状态是否为插件方式
* @return true=插件方式运行
*/
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已经建议用此方法
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);
}
}
}