无人机侦听与反制

为基于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

不要害羞,尝试一下!

  1. 当然,在情人眼中,表达至少是某种程度上的
  2. Eclipse通过“ 收藏夹”首选项设置提供了使用静态导入配置内容辅助的可能性,这使这种方法更加舒适
  3. DisplayHelper通过自动处理与Display相关的初始化和处理, DisplayHelper减少了打字工作。 您可以在文章《轻松使用SWT测试设置的JUnit规则》中找到说明和下载链接。
  4. 测试格式基于BUILD-OPERATE-CHECK模式(Robert C. Martin,清洁代码,第9章,清洁测试)。 但是在现实世界中,我可能会将构建部分提取到单独的方法中
参考: Code Affine博客上的JCG合作伙伴Frank Appel提供的SWTEventHelper清理SWT侦听器通知。

翻译自: https://www.javacodegeeks.com/2014/03/clean-swt-listener-notifcations-with-swteventhelper.html

无人机侦听与反制

无人机侦听与反制_使用SWTEventHelper清除SWT侦听器通知相关推荐

  1. 支付宝通知侦听器是什么_使用SWTEventHelper清除SWT侦听器通知

    支付宝通知侦听器是什么 为基于SWT的UI编写测试通常需要以编程方式通知小部件侦听器. 不幸的是,用于创建,初始化并最终触发事件的代码有点冗长,并且分散了测试的实际目的. 在编写了类似的初始化例程几次 ...

  2. 使用SWTEventHelper清除SWT侦听器通知

    为基于SWT的UI编写测试通常需要以编程方式通知小部件侦听器. 不幸的是,用于创建,初始化并最终触发事件的代码有点冗长,并且分散了测试的实际目的. 在几次编写了类似的初始化例程之后,我想出了一个小实用 ...

  3. 数学建模 河北杯 无人机侦听与反制问题问题1的解决思路

    原问题在:无人机侦听与反制问题 针对问题1),我们分别利用贪心算法和粒子群优化算法给出了无人机最优航迹.这两种算法通过最大化和信号速率评价函数值来确定无人机搜索方向. 利用这两种算法进行航迹仿真,贪心 ...

  4. 【Paper】2018_多无人机协同编队控制算法研究_林倩玉

    原文地址:[1]林倩玉. 多无人机协同编队控制算法研究[D].哈尔滨工业大学,2018. 2018_多无人机协同编队控制算法研究_林倩玉 第 3 章 多无人机协同编队控制算法设计 3.1 引言 3.2 ...

  5. java兵临城下_再谈java事件监听机制

    java中的事件机制的参与者有3种角色: 1.event object:就是事件产生时具体的"事件",用于listener的相应的方法之中,作为参数,一般存在于listerner的 ...

  6. python声音识别歌曲_听歌识曲--用python实现一个音乐检索器

    听歌识曲,顾名思义,用设备"听"歌曲,然后它要告诉你这是首什么歌.而且十之八九它还得把这首歌给你播放出来.这样的功能在QQ音乐等应用上早就出现了.我们今天来自己动手做一个自己的听歌 ...

  7. python 听歌识曲_听歌识曲--用python实现一个音乐检索器

    作者 | 唯心不易@博客园 http://www.cnblogs.com/chuxiuhong/p/6063602.html 听歌识曲,顾名思义,用设备"听"歌曲,然后它要告诉你这 ...

  8. python声音识别歌曲_听歌识曲--用python实现一个音乐检索器的功能

    听歌识曲,顾名思义,用设备"听"歌曲,然后它要告诉你这是首什么歌.而且十之八九它还得把这首歌给你播放出来.这样的功能在QQ音乐等应用上早就出现了.我们今天来自己动手做一个自己的听歌 ...

  9. java上课听不懂怎么办_如何快速渡过上课听不懂阶段?

    诺,我们又要回到老问题 上课听不懂怎么办? 我们之前已经和大家推荐过要先适应新学期,该怎么开始学习?,并为大家推荐了耶鲁大学公开课,作为大学课程的适应过渡. https://oyc.yale.edu/ ...

最新文章

  1. 浅谈我对DDD领域驱动设计的理解
  2. java中super()_Java 泛型中 extends 和 super 的区别是什么?
  3. 你如何在PowerShell中注释掉代码?
  4. 如何实现大数据可视化系统
  5. 单片机破解的常用方法及应对策略
  6. win7锁定计算机后怎么打开,win7电脑怎么设置锁屏
  7. MATLAB fig文件批量转换为jpg格式
  8. 计算机网络机房需要气体灭火吗,机房排烟和机房消防要求有哪些
  9. 联想电脑黑屏但电源键亮着的解决办法
  10. php vip卡,vip.php
  11. python找零方案_从自动贩卖机找零看Python中的动态规划问题
  12. matlab报错问题处理,函数或变量无法识别,不受支持的符号、不可见的字符或非 ASCII 字符的粘贴———卸载之前
  13. su -user -c
  14. 阿里实人认证android,Android集成
  15. 独家揭秘:小程序销售额破千万,他们怎么做到的
  16. 【win】WINDOWS10系统自带桌面整理工具
  17. 归并排序(C语言简单实现)
  18. MSSQL 数据页查询使他 DBCC PAGE 详细说明
  19. 企业钉钉重点功能使用说明
  20. Js构造函数创建Person类

热门文章

  1. response对象的作用
  2. BigDecimal.ROUND_UP和BigDecimal.ROUND_DOWN
  3. Python中的迭代
  4. 一范式,二范式,三范式
  5. Bracket 插件
  6. [WPF源代码]QQ空间相册下载工具
  7. PPT里对指定三角形的三条边作垂直平分线的VBA代码
  8. 计算机网络之HTTP代理服务器
  9. 移动端项目中vConsole插件的安装和使用
  10. 机器学习笔记 - 深度学习、对话机器人、微软机器人框架