zoukankan      html  css  js  c++  java
  • [转]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参数设定

      

  • 相关阅读:
    Tomcat 加载 jsp 异常:ServletException: java.lang.LinkageError
    SpringMvc CharacterEncodingFilter 解析 encoding 参数并初始化参数
    查看 chrome 浏览器中的 Headers
    SpringMvc @PathVariable 工作原理
    SpringMvc HandlerMethodResolver 的 handlerMethods & ServletHandlerMethodResolver 的 mappings 在哪里初始化的 ?
    SpringMvc HandlerMappings 何时初始化?
    scanperiod 不生效
    SLF4J bindings
    spring-boot 根据环境启动
    TmeUnit
  • 原文地址:https://www.cnblogs.com/wlzjdm/p/6882134.html
Copyright © 2011-2022 走看看