public void onSuccess(Object retValue) {
output.setText(retValue.toString());
}
});
}catch(Exception e) {
e.printStackTrace();
}
}
});
inputPanel.add(button);
inputPanel.setCellVerticalAlignment(button,
HasVerticalAlignment.ALIGN_BOTTOM);
RootPanel.get("slot1").add(inputPanel);
RootPanel.get("slot2").add(output);
}
}
清單 1 的代碼在運行時發生了嚴重的錯誤:它無法按照 JUnit 和 GWT 的 GWTTestCase 進行測試。事實上,如果我試著為這段代碼編寫測試,從技術方面來說它可以運行,但是無法按照邏輯工作?紤]一下:您如何對這段代碼進行驗證?惟一可用于測試的 public 方法返回的是 void, 那么,您怎么能夠驗證其功能的正確性呢?
如果我想以白盒方式驗證這段代碼,就必須分離業務邏輯和特定于用戶界面的代碼,這就需要進行重構。這本質上意味著把清單 1 中的代碼分離到一個便于測試的獨立方法中。但是這并非聽上去那么簡單。很明顯組件掛鉤是通過 onModuleLoad() 方法實現,但是如果我想強制其行為,可能 必須操縱某些用戶界面(UI)組件。
分解業務邏輯和 UI 代碼
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/