日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用SWTEventHelper清除SWT侦听器通知

發布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用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章,清潔測試)。 但是在現實世界中,我可能會將構建部分提取到單獨的方法中
  • 參考: 代碼Affine博客上的JCG合作伙伴 Frank Appel 提供的SWTEventHelper清理SWT偵聽器通知 。

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

    總結

    以上是生活随笔為你收集整理的使用SWTEventHelper清除SWT侦听器通知的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。