使用SWTEventHelper清除SWT侦听器通知
为基于SWT的UI编写测试通常需要以编程方式通知小部件侦听器。 不幸的是,用于创建,初始化并最终触发事件的代码有点冗长,并且分散了测试的实际目的。 在几次编写了类似的初始化例程之后,我想出了一个小实用程序类,它避免了这些冗余并使代码更具表现力1
该类称为SWTEventHelper
,它使用流利的接口编码风格,并结合了静态导入2 ,例如从Mockito已知的。 以下片段通过一个简单的示例演示了用法:
public class MouseDownCounter extends MouseAdapter {private int count;public MouseDownCounter( Control control ) {control.addMouseListener( this );}@Overridepublic void mouseDown( MouseEvent event ) {count++;}public int getCount() {return count;}
}
查看MouseDownCounter
的代码,可能会认为有必要确保鼠标按下事件实际上将计数增加一。 使用SWTEventHelper
进行的测试可能如下所示:
public class MouseDownCounterTest {@Rulepublic final DisplayHelper displayHelper = new DisplayHelper();@Testpublic void testMouseDownIncreasesCount() {Composite parent = displayHelper.createShell();Control control = new Label( parent, SWT.NONE );MouseDownCounter counter = new MouseDownCounter( control );trigger( SWT.MouseDown ).on( control );assertEquals( 1, counter.getCount() );}[...]
}
该测试在测试的构建4部分中创建了一个“真实的” SWT控件3 。 之后,控件被我们的被测试单元MouseDownCounter
“包装”。 以下操作部分使用SWTEventHelper#trigger(int)
创建一个SWT.MouseDown
事件,并通过SWTEventHelper#on(Widget)
通知在Label
控件处注册的侦听器。 最后但并非最不重要的一点是,检查部分确保鼠标向下实际上增加了计数器。
SWTEventHelper
还为org.eclipse.swt.widgets.Event
每个属性提供一种配置方法。 查看以下代码行,了解如何使用某个Event#keyCode
触发事件通知:
trigger( SWT.MouseDown ).withKeyCode( SWT.BUTTON1 ).on( control );
由于我已经使用了这个小助手一百多次,因此对其他人也可能有用。 因此,我设置了一个GitHub要点,您可以在其中下载SWTEventHelper
代码: https : SWTEventHelper
不要害羞,尝试一下!
- 当然,在情人眼中,表达至少是某种程度上的
- Eclipse通过“ 收藏夹”首选项设置提供了使用静态导入配置内容辅助的可能性,这使这种方法更加舒适
DisplayHelper
通过自动处理与Display
相关的初始化和处理,DisplayHelper
减少了打字工作。 您可以在文章《轻松使用SWT测试设置的JUnit规则》中找到说明和下载链接。- 测试格式基于BUILD-OPERATE-CHECK模式(Robert C. Martin,清洁代码,第9章,清洁测试)。 但是在现实世界中,我可能会将构建部分提取到单独的方法中
翻译自: https://www.javacodegeeks.com/2014/03/clean-swt-listener-notifcations-with-swteventhelper.html
使用SWTEventHelper清除SWT侦听器通知相关推荐
- 无人机侦听与反制_使用SWTEventHelper清除SWT侦听器通知
无人机侦听与反制 为基于SWT的UI编写测试通常需要以编程方式通知小部件侦听器. 不幸的是,用于创建,初始化并最终触发事件的代码有点冗长,并且分散了测试的实际目的. 在编写了类似的初始化例程几次之后, ...
- 支付宝通知侦听器是什么_使用SWTEventHelper清除SWT侦听器通知
支付宝通知侦听器是什么 为基于SWT的UI编写测试通常需要以编程方式通知小部件侦听器. 不幸的是,用于创建,初始化并最终触发事件的代码有点冗长,并且分散了测试的实际目的. 在编写了类似的初始化例程几次 ...
- LiteSpeed Web服务器“恢复所有侦听器”解决方法
I am using LiteSpeed Web Server. It works great when used with the LiteSpeed Cache WordPress plugin. ...
- vue 侦听器侦听对象属性_Spring中的异步和事务性事件侦听器
vue 侦听器侦听对象属性 内置的事件发布功能从Spring的早期版本开始存在,并且对于处理同一应用程序上下文中Spring组件之间的基本通信仍然有用. 通常,应用程序可以生成应用程序事件(可以是任意 ...
- 侦听127.0.01_Spring 4.2中由注释驱动的事件侦听器
侦听127.0.01 介绍 在应用程序内交换事件已成为许多应用程序中必不可少的部分,幸运的是,Spring为瞬态事件(*)提供了完整的基础结构. 最近对事务绑定事件的重构为我提供了一个借口,以在实践中 ...
- Spring中的异步和事务性事件侦听器
内置的事件发布功能从Spring的早期版本开始存在,对于处理同一应用程序上下文中Spring组件之间的基本通信仍然有用. 通常,应用程序可以生成应用程序事件(可以是任意对象)并侦听它们. 整个机制非常 ...
- Spring 4.2中由注释驱动的事件侦听器
介绍 在应用程序内交换事件已成为许多应用程序中必不可少的部分,幸运的是,Spring为瞬态事件(*)提供了完整的基础结构. 最近对事务绑定事件的重构为我提供了一个借口,以在实践中检查Spring 4. ...
- java从外部得到数据_java – 如何实现Observer以从侦听器获取数据?
我正在使用 MaterialDrawer库为我的应用程序创建一个简单的抽屉,库中的一些类实例需要在调用时传递给它们的字符串.一个例子是IProfile类: IProfile profile = new ...
- 如果删除了DOM元素,是否还将其侦听器也从内存中删除了?
本文翻译自:If a DOM Element is removed, are its listeners also removed from memory? 如果删除了DOM元素,它的侦听器也会从内存 ...
最新文章
- 《评人工智能如何走向新阶段》后记(再续26)
- 分布式服务跟踪及Spring Cloud的实现
- Normalization笔记
- python怎么输入代码-教你如何将自己的脚本代码放到服务器上运行
- jfinal java类型和数据库类型_java下JFinal getModel方法及数据库使用出现问题解决教程...
- sha256校验工具_使用AIDE工具做入侵检测
- 提升NAS网速技能get:网络聚合模式
- [设计模式-行为型]策略模式(Strategy)
- 服务器压力测试_性能测试相关的面试题
- 【优化算法】改进定步长与变步长LMS算法【含Matlab源码 629期】
- pathlib2 Path glob rglob的最新研究成果
- 阿里巴巴java规范_《阿里巴巴 Java开发手册》常用规范
- magic,imagesc,drawnow
- 基于ADS软件的Verilog-A建模
- 向日葵服务器维护,向日葵远程服务器
- c#选择文件保存路径
- 蒲丰投针实验原理_蒲丰投针原理.DOC
- 自定义富媒体广告:NativeX SDK 5.0发布!
- 【皇室战争】使用Clash Royale API,构建你的皇室应用
- matlab锂电池充电电路,锂离子电池充放电电路模型及其仿真.doc
热门文章
- html5圆形旋转菜单js,jquery 圆形旋转图片滚动切换效果
- 1688推广工具_全面了解1688数字营销
- matlab 定义一个有自变量的方程_常微分方程:(第四章) 高阶微分方程
- 以Linux系统(Ubuntu)开发生活(一)
- 带有Prometheus的弹簧靴和Micrometer第5部分:旋转Prometheus
- spring boot简介_Spring Boot简介
- apache.camel_Apache Camel 2.23发布
- std::tostring_枚举:如何正确使用name()和toString()方法
- java streams_使用JShell的Java 9 Streams API
- 安装openstack_午餐前如何安装OpenStack Cloud