[转]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插件的依赖关系

  2010081623231686.jpg

  

  接下来,生成测试用例(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插件测试

  2010081623404137.jpg

 

 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参数设定

  2010081700400424.jpg

 

转载于:https://www.cnblogs.com/wlzjdm/p/6882134.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大整数乘法c语言代码_大整数乘法

大整数乘法和我们小学学过的乘法公式一样&#xff08;如下图&#xff09;&#xff0c;就是按位相乘&#xff0c;两个数中的每一位彼此相乘&#xff0c;然后将相同列的结果加起来&#xff0c;最后统一处理进位即可。#include <iostream> #include <cstring> using n…

primefaces_懒惰的JSF Primefaces数据表分页–第2部分

primefaces页面代码非常简单&#xff0c;没有复杂性。 检查“ index.xhtml”代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"…

龙芯2h芯片不能进入pmon_“龙芯”18年:这个团队,终结了中国计算机产业的“无芯”历史...

近期在第二届数字中国建设峰会上展出的国产芯片龙芯3号。芯片是信息产业的灵魂&#xff0c;通用CPU(中央处理器)可以说是芯片中的“珠峰”。自主研发CPU&#xff0c;难度很大。在这个故事的起点&#xff0c;2001年8月的一个清晨&#xff0c;当龙芯第一代产品龙芯1号成功启动操作…

帝国cms录入表单模板php,帝国cms7.5在线表单提交制作教程

最近春哥仿站团队接到很多仿站客户订单&#xff0c;这里面有一个这样的功能&#xff0c;表单提交。今天花时间写个教程给大家。另外我们春哥仿站团队推出低价仿站业务&#xff0c;市面上99%的企业站点都能制作出来&#xff0c;有需要的联系我们。今天春哥团队华哥给大家讲解一下…

golang linux安装

go在linux下的安装&#xff1a; [rootlocalhost src]# wget https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz 速度还挺快的 [rootlocalhost src]# tar -C /usr/local -xzf go1.8.1.linux-amd64.tar.gz 设置环境变量 [rootlocalhost src]# export PATH$PATH:…

java jsonobject 转对象_解析JSON中JSONObject的高级使用

文末会有读者福利简介:在程序开发过程中&#xff0c;在参数传递&#xff0c;函数返回值等方面&#xff0c;越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式&#xff0c;同时也易于机器解析和生成、易于理解、阅读和撰写&#xff0c;而且Json采…

xfs支持oracle,让linux内核支持xfs文件系统

作/译者&#xff1a;叶金荣(Email:)&#xff0c;来源&#xff1a;http://imysql.cn&#xff0c;转载请注明作/译者和出处&#xff0c;并且不能用于商业用途&#xff0c;违者必究。 XFS 简介XFS 最初是由 Silicon Graphics&#xff0c;Inc. 于 90 年代初开发的。那时&#xff0c…

c语言打印菱形_没事了,搞一下C语言打印大小可变的菱形图案?

问题分析&#xff1a;菱形的大小size其实就是中间行中*号的个数&#xff0c;也是整个菱形的行数&#xff0c;其值必是奇数。问题的关键之一是如何确定每行中*号的个数。经过分析得知&#xff1a;当行i<(size1)/2时&#xff0c;该行的*号个数为n2*i-1&#xff0c;否则n2*&…

ListView 与 RecyclerView的创建与使用的异同

相同&#xff1a;1.在使用时&#xff0c;都需要先获取&#xff0c;再新建适配器&#xff0c;再用serAdapter方法绑定适配器 2.创建数据List&#xff0c;都是新建ArrayList 不同&#xff1a;1.在新建适配器类时&#xff0c;listview的适配器继承自ArrayAdapter,recyclerview的适…

测试驱动开发 测试前移_测试驱动开发–双赢策略

测试驱动开发 测试前移敏捷从业人员谈论测试驱动开发 &#xff08;TDD&#xff09;&#xff0c;所以许多关心代码质量和可操作性的开发人员也是如此。 我曾几何时&#xff0c;不久前设法阅读了有关TDD的文章。 据我了解&#xff0c;TDD的关键是&#xff1a; 编写测试&#xff0…

android timer后函数继续执行_Android内存异常机制(用户空间)_JE

常见的Android稳定性异常&#xff0c;有内核异常和Android层异常。内核异常也就是常说的“kernel panic”&#xff0c;简称KE异常&#xff1b;Android层异常又分为java层crash和Native层crash&#xff0c;简称JE、NE异常。此外&#xff0c;Android层异常还有应用ANR和system_Se…

oracle10 数据库审计,Oracle数据库审计用法实例

本节是从ORACLE METALINK的DOC:167293.1翻译整理而来的。通过举例的方式来说明ORACLE审计的用法。ORACLE的审计可以从语句级、对象本节是从Oracle METALINK的DOC:167293.1翻译整理而来的。通过举例的方式来说明ORACLE审计的用法。ORACLE的审计可以从语句级、对象级和权限级几个…

cefsharp 发送请求服务器_超高性能管线式HTTP请求(实践·原理·实现)

来源:https://www.cnblogs.com/lulianqi/p/8167526.html这里的高性能指的就是网卡有多快请求发送就能有多快&#xff0c;基本上一般的服务器在一台客户端的压力下就会出现明显延时。该篇实际是介绍pipe管线的原理&#xff0c;下面主要通过其高性能的测试实践&#xff0c;解析背…

oracle 启用闪回数据库,如何启用Oracle10g闪回数据库特性

为什么80%的码农都做不了架构师&#xff1f;>>>1.确认当前模式SYS AS SYSDBA on 29-MAR-05 >select flashback_on from v$database;FLA---NO2.检查/修改恢复区设置SYS AS SYSDBA on 29-MAR-05 >show parameter db_recovery_file_destNAME TYPE VALUE-----------…

nvme通用驱动_对领域驱动设计的理解与实践

领域驱动设计(Domain-Driven-Design)是一种针对大型复杂系统的领域建模与分析方法论。2003 年&#xff0c;Eric Evans 发布《Domain-Driven Design: Tackling Complexity in the Heart of Software》(领域驱动设计&#xff1a;软件核心复杂性应对之道)&#xff0c;其中定义了DD…

为什么不应该用Stream forEach替换for循环的3个原因

太棒了&#xff01; 我们正在将代码库迁移到Java8。我们将用函数替换所有内容。 扔掉设计模式。 删除面向对象。 对&#xff01; 我们走吧&#xff01; 等一下 Java 8已经问世了一年多&#xff0c;而这种兴奋又回到了日常业务中。 baeldung.com从2015年5月开始执行的一项非代…

使用NPOI库导入导出EXCEL

一、EXCEL 导入&#xff08;Excel 导入导出实际项目中会被封装成**Helper 本示例只对简单功能做演示&#xff09; NPOI 包引用 视图view {ViewBag.Title "NPOIExcel"; }<h2>NPOIExcel</h2> <form action"Url.Action("NPOIInport", &…

oracle12c ora 12547,Oracle 12c DBCA出现PRCR-1079 ORA-12547 CRS-5017

Oracle 12c用dbca创建数据库时出现了PRCR-1079 ORA-12547 CRS-5017不能启动数据库。因为这里安装了Oracle Restart&#xff0c;所以尝试使用srvctl start database命令来手动启动数据库&#xff0c;但是结果还是一样不能启动。[gridoracle12c 12.1]$ srvctl start database -db…

kmeans鸢尾花分类python代码_python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)

一.分散性聚类(kmeans) 算法流程: 1.选择聚类的个数k. 2.任意产生k个聚类&#xff0c;然后确定聚类中心&#xff0c;或者直接生成k个中心。 3.对每个点确定其聚类中心点。 4.再计算其聚类新中心。 5.重复以上步骤直到满足收敛要求。&#xff08;通常就是确定的中心点不再改变。…

akka_Akka的字数统计MapReduce

akka在我与Akka的日常工作中&#xff0c;我最近写了一个字数映射减少示例。 本示例实现了Map Reduce模型&#xff0c;该模型非常适合横向扩展设计方法。 流 客户端系统&#xff08;FileReadActor&#xff09;读取文本文件&#xff0c;并将每一行文本作为消息发送给ClientActor…