六安官网,整站seo,天气预报网站开发,手机怎么登pc端智慧团建为基于SWT的UI编写测试通常需要以编程方式通知小部件侦听器。 不幸的是#xff0c;用于创建#xff0c;初始化并最终触发事件的代码有点冗长#xff0c;并且分散了测试的实际目的。 在几次编写了类似的初始化例程之后#xff0c;我想出了一个小实用程序类#xff0c;它避免… 为基于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章清洁测试。 但是在现实世界中我可能会将构建部分提取到单独的方法中 参考 代码Affine博客上的JCG合作伙伴 Frank Appel 提供的SWTEventHelper清理SWT侦听器通知 。 翻译自: https://www.javacodegeeks.com/2014/03/clean-swt-listener-notifcations-with-swteventhelper.html