2011-03-22 114 views
0

對於我當前的項目,我開發了一個用於配置服務器的GUI。 GUI正在使用一些服務來運行命令。Unittest GUI客戶端

你曾經爲GUI客戶端開發過單元測試嗎? 你能否建議我採用一些架構方法來讓我的項目可測試?

感謝, 拉杜

回答

1

我不寫爲GUI客戶端的單元測試。 GUI讓我的測試變慢。

取而代之的是將您的客戶端分成一組類上的GUI皮膚。搜索PresentationModel或MVVM模式以獲取更多信息。 一旦你這樣做了,你可以編寫(按照速度和音量的降序排列)

  • 單元測試的類。 (快速 - 每個測試微秒),其通過行使演示操作客戶像一個真正的用戶,但不足的皮膚/ GUI操作
  • 驗收試驗或的ViewModels (比單元測試慢)
  • 一個一些理智的UI驗收測試(使用像White這樣的庫)驗證GUI是否正確連接到底層類。 (最慢)
1

你可以試試庫Dogtail對於Linux或Pywinauto的Windows - 我與那些庫編寫的測試看起來像:單擊按鈕,然後看是否如預期般在服務器狀態的變化。

+0

我一直在使用白色; Pywinauto看起來很有趣。它起什麼作用? MS UI自動化ID? – Gishu 2011-03-25 06:01:02

+0

它使用純WinAPI調用從所有屏幕上的窗口和控件讀取文本標籤,然後嘗試從中編寫一些類的層次結構。所以它不適用於自己繪製所有GUI的應用程序。 – pelya 2011-03-31 12:52:07

1

除了使用爲此開發的不同工具「測試」應用程序的可能性之外,我建議使用一些passive view模式,如WinForms的MVP或WPF的MVVM(P)。 通過這種方式,幾乎所有的智能都在主持人面前,通過嘲笑視圖,你可以很好地測試它。

1

嘿。
對於'桌面'應用程序,使用White從單元測試框架測試GUI。對於網絡應用程序使用Watin