分享
 
 
 

Eclipse JUnit Plugin -- 2.创建一个执行测试的菜单

王朝java/jsp·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

Eclipse JUnit Plugin(2.创建一个执行测试的菜单)

By www.coolhou.com 灰石

( http://blog.csdn.net/lmstone )

LimingMail1998@yahoo.com.cn

文档描述:

由于工作原因,也是本人的兴趣,接触到Eclipse的插件编写工作。现将一些学习笔记和心德共享出来,同大家分享。由于本人对写作向来没什么天赋(上学时,语文一直在及格与不及格的边缘徘徊),由什么错别字之类的大家谅解。对于技术上的不同见解和看法请大家讨论。

本文并非全部原创,所描述的JUnit Plugin是引用《Contributing to Eclipse》一书中的内容,文章的内容加入我本人的一些理解,所以有些地方加入了一些扩展和改变。此文算是一个读书笔书吧。

文档经历:

1. 2005-10-26 创建一个执行测试的菜单项

2. 2005-10-27 创建一个执行测试的菜单

导航

导航

2. 创建一个执行测试的菜单

2.1. 我们的计划

2.2. 要实现的功能

2.3. 步骤

2.3.1. 修改plugin.xml

2.3.2. RunTestAction.java

2.4. 回顾

2.5. 前行的路标

2. 创建一个执行测试的菜单

2.1. 我们的计划

2.2. 要实现的功能

2.3. 步骤

2.3.1. 修改plugin.xml

2.3.2. RunTestAction.java

2.4. 回顾

2.5. 前行的路标

1. 创建一个执行测试的菜单

1.1. 我们的计划l 工作台如何懒式创建我们插件中用到的Action对象

l Action对象如何工作

l 插件依赖关系和构建classpath的管理

1.2. 要实现的功能n 我们要定义一个类,它针对选中的java为型,运行其中的测试方法,并显示结果

1.3. 步骤1.3.1. 修改plugin.xml 当选择我们的菜单项时,应该调用JUnit插件中哪个对象?需要在清单文件中指定要被调用的对象所属的类。

<!—声明一个弹出菜单项 -->

<extension point="org.eclipse.ui.popupMenus">

<objectContribution

id="com.coolhou.student.eclipse.junit.runtest"

objectClass="org.eclipse.jdt.core.IType"

>

<action

id="com.coolhou.student.eclipse.junit.runtest.action"

label="运行测试"

enablesFor="1"

class="com.coolhou.student.eclipse.junit.action.RunTestAction"

>

</action>

</objectContribution>

</extension>

1.3.2. RunTestAction.java1.3.2.1. 建立RunTestAction.java文件,并添加IObjectActionDelegate接口 为工作台里的“对象”元素增加一个动作时,必须实现IObjectActionDelegate接口

public class RunTestAction implements IObjectActionDelegate{

}

1.3.2.2. 实现IObjectActionDelegate public void setActivePart(IAction action, IWorkbenchPart targetPart) {

}

public void run(IAction action) {

}

public void selectionChanged(IAction action, ISelection selection) {

}

1.3.2.3. 保存选中的对象ISelection selection;

/*

* 把被选中的元素保存在selectionChanged变量中,因为run()方法不接受任何参数

* 无法直接将选中的元素传递给该方法

*/

public void selectionChanged(IAction action, ISelection selection) {

this.selection = selection;

}

1.3.2.4. 编写run()方法 下面,我们要编写run()方法。在这里,需要引用IType接口,这个接口在Java Core插件(org.eclipse.jdt.core)中定义的,所以我们必须把这个插件加入到我们的“必需插件”列表中。编辑plugin.xml,找到<requires>元素,增加org.eclipse.jdt.core的描述。

<requires>

<import plugin="org.eclipse.ui"/>

<import plugin="org.eclipse.core.runtime"/>

<import plugin="org.eclipse.jdt.core"/>

</requires>

run()方法

public void run(IAction action) {

if (!(selection instanceof IStructuredSelection))

return;

IStructuredSelection structured = (IStructuredSelection) selection;

IType type = (IType) structured.getFirstElement();

}

/**

* 只有当被选中的是一个IStructuredSelection对象,也就是说,是一个含有

* 多层结构的界面元,而不是文本之类的元时,我们的run方法才开如工作。

*/

表:2.1 代码说明

run()

描述

if (!(selection instanceof IStructuredSelection))

只有当被选中的是一个IStructuredSelection对象,也就是说,是一个含有多层结构的界面元,而不是文本之类的元时,我们的run方法才开如工作。

IStructuredSelection structured = (IStructuredSelection) selection;

获取被保存的元素

IType type = (IType) structured.getFirstElement();

从被选中的元素取出一个IType对象。在这里可以放心,因为这里取出的一定是IType对象,因为清单文件中有这样一行:objectClass="org.eclipse.jdt.core.IType"

1.3.2.5. 运行插件

现在插件可以运行了,但还是什么也没有,只是不弹出警告了,大家别急,待续。

1.4. 回顾l 我们看到,在实际选中菜单之前,RunAction不会被创建

l 在被选中的元素信息被传递给了selectionChanged()方法,然后在run()方法中被使用。

1.5. 前行的路标

l 动态改变菜单项的状态和标签,在插件被加载之后,你就可以在代码中动态更新菜单的状态(是否林用)和标签。

l 添加一个子菜单,在其中添加一组动作,你可以首先在清单文件中声明一个带有路径信息的菜单,然后在每个动作声明中使用这个路径。

1. 创建一个执行测试的菜单

1.1. 我们的计划l 工作台如何懒式创建我们插件中用到的Action对象

l Action对象如何工作

l 插件依赖关系和构建classpath的管理

1.2. 要实现的功能n 我们要定义一个类,它针对选中的java为型,运行其中的测试方法,并显示结果

1.3. 步骤1.3.1. 修改plugin.xml 当选择我们的菜单项时,应该调用JUnit插件中哪个对象?需要在清单文件中指定要被调用的对象所属的类。

<!—声明一个弹出菜单项 -->

<extension point="org.eclipse.ui.popupMenus">

<objectContribution

id="com.coolhou.student.eclipse.junit.runtest"

objectClass="org.eclipse.jdt.core.IType"

>

<action

id="com.coolhou.student.eclipse.junit.runtest.action"

label="运行测试"

enablesFor="1"

class="com.coolhou.student.eclipse.junit.action.RunTestAction"

>

</action>

</objectContribution>

</extension>

1.3.2. RunTestAction.java1.3.2.1. 建立RunTestAction.java文件,并添加IObjectActionDelegate接口 为工作台里的“对象”元素增加一个动作时,必须实现IObjectActionDelegate接口

public class RunTestAction implements IObjectActionDelegate{

}

1.3.2.2. 实现IObjectActionDelegate public void setActivePart(IAction action, IWorkbenchPart targetPart) {

}

public void run(IAction action) {

}

public void selectionChanged(IAction action, ISelection selection) {

}

1.3.2.3. 保存选中的对象ISelection selection;

/*

* 把被选中的元素保存在selectionChanged变量中,因为run()方法不接受任何参数

* 无法直接将选中的元素传递给该方法

*/

public void selectionChanged(IAction action, ISelection selection) {

this.selection = selection;

}

1.3.2.4. 编写run()方法 下面,我们要编写run()方法。在这里,需要引用IType接口,这个接口在Java Core插件(org.eclipse.jdt.core)中定义的,所以我们必须把这个插件加入到我们的“必需插件”列表中。编辑plugin.xml,找到<requires>元素,增加org.eclipse.jdt.core的描述。

<requires>

<import plugin="org.eclipse.ui"/>

<import plugin="org.eclipse.core.runtime"/>

<import plugin="org.eclipse.jdt.core"/>

</requires>

run()方法

public void run(IAction action) {

if (!(selection instanceof IStructuredSelection))

return;

IStructuredSelection structured = (IStructuredSelection) selection;

IType type = (IType) structured.getFirstElement();

}

/**

* 只有当被选中的是一个IStructuredSelection对象,也就是说,是一个含有

* 多层结构的界面元,而不是文本之类的元时,我们的run方法才开如工作。

*/

表:2.1 代码说明

run()

描述

if (!(selection instanceof IStructuredSelection))

只有当被选中的是一个IStructuredSelection对象,也就是说,是一个含有多层结构的界面元,而不是文本之类的元时,我们的run方法才开如工作。

IStructuredSelection structured = (IStructuredSelection) selection;

获取被保存的元素

IType type = (IType) structured.getFirstElement();

从被选中的元素取出一个IType对象。在这里可以放心,因为这里取出的一定是IType对象,因为清单文件中有这样一行:objectClass="org.eclipse.jdt.core.IType"

1.3.2.5. 运行插件

现在插件可以运行了,但还是什么也没有,只是不弹出警告了,大家别急,待续。

1.4. 回顾l 我们看到,在实际选中菜单之前,RunAction不会被创建

l 在被选中的元素信息被传递给了selectionChanged()方法,然后在run()方法中被使用。

1.5. 前行的路标

l 动态改变菜单项的状态和标签,在插件被加载之后,你就可以在代码中动态更新菜单的状态(是否林用)和标签。

l 添加一个子菜单,在其中添加一组动作,你可以首先在清单文件中声明一个带有路径信息的菜单,然后在每个动作声明中使用这个路径。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有