[英]How do simulate a button click in a swing pop up dialog?
我是Java的新手,我想為名稱驗證類編寫一個JUnit測試
我想測試以下代碼:
public boolean createNewUMLClassFromString(String className) {
if(validate(className)){
....
}
return false;
}
private boolean validate(String userInput){
/* check if it's empty */
if (userInput.equals("")){
JOptionPane.showMessageDialog(null, "Class Name can't be empty");
return false;
}
return true;
}
所以我寫了一個JUnit
public void emptyStringCheckerTest(){
assertFalse("new class can not be empty", um.createNewUMLClassFromString("do"));
}
它有效,但在測試運行過程中,我需要每次都單擊彈出對話框。
那么有人可以告訴我如何在測試過程中模擬按鈕點擊,或者有更好的方法來編寫測試嗎? 謝謝?
要執行程序設計按鈕單擊,只需調用doClick()
方法即可。 不過,我不知道如何將其插入到測試程序中。
查看java.awt.Robot
,以及增強它的abbot
http://abbot.sourceforge.net/doc/overview.shtml這樣的庫。
重寫您的validate
方法並將JOptionPane
調用移動到您可以在單元測試中替換的單獨方法(例如,包可見方法)。
private boolean validate(String userInput){
/* check if it's empty */
if (userInput.equals("")){
showCannotBeEmptyDialog();
return false;
}
return true;
}
void showCannotBeEmptyDialog(){
JOptionPane.showMessageDialog(null, "Class Name can't be empty");
}
使包可見仍允許您在測試中覆蓋它(例如,不顯示UI),並且您仍然能夠斷言該方法是否實際被調用。
另一種選擇是將實例作為構造函數參數傳遞,該參數將負責向用戶顯示消息。 在您的生產代碼中,此實例將使用JOptionPane
類,在測試中您只需使用虛擬對象。 但是,如果只是為了顯示一個對話框,這可能是過度的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.