[转]Eclipse插件开发之基础篇(3) 插件的测试与调试

原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/17/eclipse_plugin_1_1_2.html

1. 使用JUnit对插件进行测试

  Eclipse中已经嵌入了JUnit,我们可以使用JUnit为插件进行单体测试。一般的JUnit是不可以对插件部分(对Eclipse的API依赖的部分)进行测试的,但是在PDE环境中使利用JUnit对插件进行单元测试成为可能。

  要想进行测试首先要添加插件的依赖关系,在插件设定页面的[依赖关系(Dependencies)]页面点击[增加(Add)]按钮,添加[org.junit(3.8.2)]作为必须插件(图3-1)。

图3-1 增加org.junit插件的依赖关系

  

  

  接下来,生成测试用例(TestCase)。测试用例和一般的JUnit用例相同,继承junit.framework.TestCase。代码1中的测试用例说明了,在工作台页面中打开一个视图,并且确认打开的视图处于激活状态。

代码1 插件测试用例的示例

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

public class SampleViewTest extends TestCase {

    public SampleViewTest(String name) throws Exception {

        //取得当前活动的页面

        IWorkbench workbench = PlatformUI.getWorkbench();

        IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();

        IWorkbenchPage page = window.getActivePage();

       

        //打开视图

        page.showView("cn.sf.amateras.sample.views.SampleView");

       

        //确认打开的视图处于激活状态

        IWorkbenchPart activePart = page.getActivePart();

        assertTrue(activePart instanceof IViewPart);

        assertEquals("cn.sf.amateras.sample.views.SampleView",

                activePart.getSite().getId());

    }

}

  当前这个测试用例可以通过在测试类上点右键[执行(Run As)]->[JUnit插件测试(JUnit Plug-in Test)]执行。

图3-2 执行JUnit插件测试

  

 2. 调试和错误处理

  调试插件

    用调试模式启动运行时工作台后,像一般的java程序一样,在程序中设置断点就可以了。调试模式的启动可以从manifest编辑器的概要页面,点击[调试              Eclipse应用(Lunach an Eclipse Application in Debug mode)],或者点击工具栏上的调试按钮。

  在错误发生时,需要做以下两件事:

  1)通知使用者

  2)记录日志

  输出日志

    向Eclipse下的[.metadata]文件夹的[/.log]文件进行日志输出。输出日志时使用org.eclipse.core.runtime.ILog接口,通过插件类获得ILog接口的实例。如代码2所示

代码2 输出日志

?


1

2

3

4

5

6

7

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对象的构造函数的参数如表1所示。

表1 Status的构造参数

参数   说明
int severty 重要度。候选值有IStatus.OK、IStatus.ERROR、IStatus.INFO、IStatus.WARNING、IStatus.CANCEL。
String pluginId 插件的ID
int code 插件固定的消息code,或者是IStatus.OK。
String message 输出日志的消息。
Throwable exception 输出日志的异常。没有时候添null。

  错误通知

  错误发生后通知使用者的方法有很多,最简单的方法就是使用JFace的org.eclipse.jface.dialogs.ErrorDialog类。

代码3 使用ErrorDialog

?


1

2

3

4

5

6

7

try{

    //....

}catch(Exception e){

    IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID,

            0, e.toString(), e);

    ErrorDialog.openError(window.getShell(), "错误", "插件出错了!", status);

}

  运行时工作台启动时的参数

  Eclipse是由很多的插件构成的,在其背后运行着非常复杂的处理,所以也需要相应的内存。特别是,很多的插件在加载庞大的类时,就很容易出现VM常驻(permanent)区域的不足的情况。

  通常,Eclipse使用的堆(Heap)区和常驻区的大小可以通过Eclipse安装目录下的eclipse.ini文件进行设定。

代码4 默认的eclipse.ini文件

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

-showsplash

org.eclipse.platform

--launcher.XXMaxPermSize

256m

--launcher.defaultAction

openFile

-vmargs

-Dosgi.requiredJavaVersion=1.5

-Xms40m

-Xmx512m

  在插件开发过程中如果出现内存空间不足的时候,也可以通过[运行(Run)]->[运行设定(Run Configurations)]窗口的[参数]tab页中的[VM参数]项来指定空间的大小。

图3-3 VM参数设定

  

时间: 2024-10-06 02:33:01

[转]Eclipse插件开发之基础篇(3) 插件的测试与调试的相关文章

Eclipse插件开发之基础篇(1) 插件开发的基础知识

转载出处http://www.cnblogs.com/liuzhuo 名词翻译 有一些名词在翻译的过程中可能会出现歧义,在这里统一一下. アーキテクチャ=architecture=架构 プラットフォーム=platform=平台 コンポーネント=component=组件 其余的随时补充. 1.Eclipse的架构 Eclipse被作为java的IDE(集成开发环境)被广泛的应用,但是从本质上看Eclipse是一个整合了各种开发工具的平台.因此,它采用了可以自由的增加各种功能的插件架构技术.Ecli

[转]Eclipse插件开发之基础篇(1) 插件开发的基础知识

原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/13/eclipse_plugin_1_0_2.html 名词翻译 有一些名词在翻译的过程中可能会出现歧义,在这里统一一下. アーキテクチャ=architecture=架构 プラットフォーム=platform=平台 コンポーネント=component=组件 其余的随时补充. 1.Eclipse的架构 Eclipse被作为java的IDE(集成开发环境)被广泛的应用,但是从本质上看Eclipse

[转]Eclipse插件开发之基础篇(4) OSGi框架

原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/18/eclipse_plugin_1_2_1.html 1. 什么是OSGi框架 OSGi(Open Service Gateway Initiative)框架是运行在JavaVM环境里的服务平台.框架提供的主要功能是对应用和组件的生命周期管理,系统可以在无需重启的情况下,远程操纵组件的安装.启动.停止. OSGi框架不仅用于Eclipse,从移动终端到车载系统,各个领域都在应用这个技术.

Eclipse插件开发之基础篇(2) 第一个Eclipse插件

转载出处:http://www.cnblogs.com/liuzhuo. 在Eclipse中使用PDE(Plugin Development Environment)进行插件开发.在PDE中为大家准备了几个模板供大家参考.第一步咱们先利用模板制作一个简单的插件作为和PDE的第一次接触. 1.生成插件工程 通过选择[文件]->[新建]->[工程...]启动[新工程(New Project)]向导.在插件开发的时候我们就不能选择通常的java工程了,要选择新建一个插件工程. 选择[插件工程(Plu

[转]Eclipse插件开发之基础篇(2) 第一个Eclipse插件

原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/15/eclipse_plugin_1_1_1.html 在Eclipse中使用PDE(Plugin Development Environment)进行插件开发.在PDE中为大家准备了几个模板供大家参考.第一步咱们先利用模板制作一个简单的插件作为和PDE的第一次接触. 1.生成插件工程 通过选择[文件]->[新建]->[工程...]启动[新工程(New Project)]向导.在插件开发的

Eclipse插件开发之基础篇(5) 制作OSGi Bundle

转载出处:http://www.cnblogs.com/liuzhuo 1. 生成OSGi工程 首先打开新工程向导,选择创建Eclipse插件工程.在[目标平台(Target Platform)]选项中选择[OSGi 框架(OSGi framework)]. 图5-1 创建插件工程 在选择模板的时候选择,Hello OSGi Bundle后点击完成. 图5-2 选择OSGi模板 生成工程后,在Manifest编辑器中点击[启动框架(Launch the framework)]运行新生成的OSGi

Android插件开发初探——基础篇

Android插件开发初探 对于Android的插件化其实已经讨论已久了,但是市面上还没有非常靠谱成熟的插件框架供我们使用.这里我们就尝试性的对比一下Java中,我们使用插件化该是一个怎么样的流程,且我们如何将此流程移植到Android框架上去使用.很多代码都是内部资料,不喜勿喷,谢谢~ 为什么要插件化? 功能越来越多 代码.安装包越来越大 小的更新也需要重新发布 更新频繁,安装成本太大 用户无法选择性加载需要的模块 -- 插件化的好处 主安装包较小 强制模块化,降低耦合度 减少整体更新的次数

学习Eclipse插件开发需要循序渐进看的书籍列表?

因为工作需要,需要用Eclipse插件进行开发.而笔者在以前的工作经验中根本就没有接触过,而且这类的技术和视频资料非常少.通过摸打滚爬将近2年,终于小有成就.刚好趁着圣诞节公司放了一个礼拜的假期,和大家分享一下学习Eclipse插件开发需要循序渐进看的书籍列表,以节约大家的宝贵时间. 1.  OSGI是Eclipse插件开发的基础,因此在进行Eclipse Plugin开发的时候,一定要先了解OSGI是什么?已经OSGI bundle相关的概念,因此,一定要找一本OSGI相关的书籍来阅读. 1.

Android插件开发初探——分析篇

承接上文 Android插件开发初探--基础篇 http://blog.csdn.net/yzzst/article/details/45582315 我们通过使用DexClassLoader能够将classes.dex中的类动态的加载进入当前进程.当然,也就可以预先定一些代理的接口完成四大组件的功能. 整体功能如下图所示: 当然,对于一个Android的应用程序而言,只是动态的加载类与声明四大组件是不够的.如下图所示,使我们常见到的一个APK文件解压缩后的文件内容. 有过Android项目开发