Eclipse插件终极攻略:测试插件

开发 后端
本文为51CTO挑选的一篇日文开发的资料《Eclipse 3.4 対応 Eclipse 3.4 プラグイン開発 徹底攻略》中的“Eclipse插件测试”部分……

51CTO在前两篇文章分别介绍了Eclipse插件基本概念介绍安装实例,这篇文章我们将介绍一下Eclipse插件的测试。这个系列都翻译自日文《Eclipse 3.4 対応 Eclipse 3.4 プラグイン開発 徹底攻略》,做对日外包和对Eclipse插件使用的朋友都可以参考本系列文章,闲话少叙,我们先来对我们已经安装好的Eclipse插件进行测试。

51CTO推荐专题:Eclipse平台应用与开发详解

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

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

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

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

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

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

  1. public class SampleViewTest extends TestCase {  
  2.    
  3.     public SampleViewTest(String name) throws Exception {  
  4.         //取得当前活动的页面  
  5.         IWorkbench workbench = PlatformUI.getWorkbench();  
  6.         IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();  
  7.         IWorkbenchPage page = window.getActivePage();  
  8.            
  9.         //打开视图  
  10.         page.showView("cn.sf.amateras.sample.views.SampleView");  
  11.            
  12.         //确认打开的视图处于激活状态  
  13.         IWorkbenchPart activePart = page.getActivePart();  
  14.         assertTrue(activePart instanceof IViewPart);  
  15.         assertEquals("cn.sf.amateras.sample.views.SampleView",  
  16.                 activePart.getSite().getId());  
  17.     }  
  18.    

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

执行JUnit插件测试 
图3-2 执行JUnit插件测试

#p#

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. ILog log = Activator.getDefault().getLog();  
  2.            
  3. log.log(new Status(IStatus.OK, Activator.PLUGIN_ID,  
  4.     0, "正常消息", null));  
  5.            
  6. log.log(new Status(IStatus.OK, Activator.PLUGIN_ID,  
  7.     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. try{  
  2.     //....  
  3. }catch(Exception e){  
  4.     IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID,  
  5.             0, e.toString(), e);  
  6.     ErrorDialog.openError(window.getShell(), "错误", "插件出错了!", status);  

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

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

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

代码4 默认的eclipse.ini文件

  1. -showsplash  
  2.    
  3. org.eclipse.platform  
  4.    
  5. --launcher.XXMaxPermSize  
  6.    
  7. 256m  
  8.    
  9. --launcher.defaultAction  
  10. openFile  
  11.    
  12. -vmargs  
  13.    
  14. -Dosgi.requiredJavaVersion=1.5  
  15.    
  16. -Xms40m  
  17.    
  18. -Xmx512m 

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

VM参数设定 
图3-3 VM参数设定

【编辑推荐】

  1. Eclipse插件终极攻略:安装实例
  2. Eclipse插件终极攻略:基本概念介绍
  3. Eclipse插件大全 挑选最牛的TOP30
责任编辑:佚名 来源: 博客园
相关推荐

2010-08-17 11:03:14

Eclipse插件

2010-08-16 16:23:00

Eclipse插件

2009-06-04 20:26:45

2013-07-16 15:35:54

Eclipse插件Android开发学习

2009-06-03 16:06:28

Eclipse插件开发Eclipse

2011-11-21 10:04:52

Java开源Google

2013-05-27 15:07:36

Eclipse插件

2009-06-18 14:28:24

Eclipse中添加M

2009-06-15 16:35:44

Spring IDEEclipse插件

2014-11-24 09:49:33

Eclipse

2011-03-10 10:32:45

2009-06-10 16:41:51

Links安装Ecli

2009-09-17 09:44:31

Flex for ec

2009-06-05 14:36:28

Eclipse插件安装Eclipse教程

2011-12-01 09:50:28

2009-06-04 20:45:11

Eclipse插件安装Eclipse插件使用

2012-05-22 01:01:28

EclipseEclipseColo

2009-06-03 15:31:40

Eclipse插件提高代码质量

2010-06-09 11:27:46

Eclipse UML

2023-06-12 17:54:50

点赞
收藏

51CTO技术栈公众号