![](/img/trans.png)
[英]Best approach to integration test a Flex/Java web application via Maven?
[英]Test an application GUI coded with Java Swing : best approach?
我必須自動為Java“繪圖”應用程序GUI(如ArgoUML / LaTeXDraw / etc)生成測試。 我需要驗證經過測試的應用程序的行為是否正確。 在給定的示例中,我需要檢查“撤消/重做”按鈕是否工作正常=“撤消”將畫布置於前移狀態,而“重做”又將其置於以前的狀態。
我已經對如何解決這個問題有了一個想法,但是我希望有經驗的人給予反饋:
我需要捕獲程序的狀態以供以后分析,以查看程序的狀態是否一致,是否應該對窗口進行屏幕截圖或是否有辦法遍歷所有JFrame的組件並捕獲其屬性(它應該包含畫布)州)?
更重要的是,我不知道如何在界面上找到每個按鈕。 告訴機器人給定的按鈕在窗口中的某個(x,y)位置的最簡單方法是什么? 我應該在按鈕的.jpeg版本中搜索像素嗎? 我是否應該手動在界面上找到每個按鈕(即為每個包含x,y屬性的按鈕創建一個類)?
謝謝您的寶貴時間,如果我的問題中的任何部分似乎不夠清楚,請告訴我,我會盡力更清楚地解釋一下。
附言:關於我需要做的工作的任何建議都歡迎:)
Robot
可以在過程的各個部分使用,但取決於編寫方式,遵循最佳測試實踐的願望以及總體需求,它可能會很快受到限制。 如果您未編寫代碼或最佳編碼實踐使您無法訪問或直接測試應用程序的各個方面,則需要采取其他方法。
根據我的經驗,我使用反射來測試實際狀態(例如各種組件的文本值),從而在主要入口點建立隧道。 Robot
僅對我執行關鍵事件有用。
最終,答案取決於許多因素:
Robot
)。 如果您需要更多信息,則可以獲取 JFrame
或JPanel
的組件並保存提供的屬性。 doClick
直接就可以了,移動鼠標Robot
,做一個按下鼠標等。 Robot
,它將被鏈接到主設備。 在簡單的場景中,僅需要new Robot().keyPress(KeyEvent.VK_ENTER);
考慮到所有這些,存在着諸如陷阱之類的陷阱。 最好開始模擬/測試,不要觸摸機器的任何外圍設備。 另外,根據某些方法的運行時間,您可能想要Thread.sleep()
(我們很遺憾這樣做)或使用連接的線程。
您沒有添加任何代碼,因此我只能猜測:
如果您的代碼遵循MV(V)C模式,則無需通過GUI進行測試。 您可以直接測試處理重做/撤消的控制器方法,並驗證它們是否正確更改了模型並與撤消/重做堆棧進行通信(這是我的世界中模型的一部分...)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.