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参数设定
?转载请注明出处,http://www.cnblogs.com/liuzhuo.