51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2355|回复: 2
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-4-26 17:18:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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. public class SampleViewTest extends TestCase {

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

  17. }
复制代码


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

图3-2 执行JUnit插件测试





 2. 调试和错误处理

  调试插件

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

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

  1)通知使用者

  2)记录日志



  输出日志

    向Eclipse下的[.metadata]文件夹的[/.log]文件进行日志输出。输出日志时使用org.eclipse.core.runtim
e.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,
复制代码

    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);
  7. }
  8.   
复制代码


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

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

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

代码4 默认的eclipse.ini文件

  1. -showsplash

  2. org.eclipse.platform

  3. --launcher.XXMaxPermSize

  4. 256m

  5. --launcher.defaultAction
  6. openFile

  7. -vmargs

  8. -Dosgi.requiredJavaVersion=1.5

  9. -Xms40m

  10. -Xmx512m
复制代码


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

图3-3 VM参数设定

  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-20 16:57 , Processed in 0.066933 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表