2008-09-01 67 views
2

所以我知道單元測試是必須的。我認爲TDD是添加新模塊時要走的路。即使在實踐中,我實際上並沒有這樣做。有點像評論代碼,真的。UI和事件測試

真實的東西是,我掙扎,讓我圍繞着如何單元測試的用戶界面和更普遍產生事件的對象頭:用戶控件,異步數據庫操作等

這麼多的我代碼與UI事件有關,我甚至無法看到如何啓動單元測試。

那裏一定有一些引物和啓動文檔?一些提示和技巧?

我一般在C#(2.0和3.5)工作,但我不確定這與問題嚴格相關。

回答

2

要記住的是單元測試是關於測試你編寫的代碼單元。你的單元測試不應該測試點擊一個按鈕是否引發了一個事件,而是由該點擊事件執行的代碼按照它應該做的那樣進行測試。

你真正想要做的就是測試底層代碼做它應該做什麼,這樣你的UI層可以自信地執行該代碼。

0

你應該分開邏輯和表示。使用MVP(模型 - 視圖 - 演示者)/ MVC(模型 - 視圖 - 控制器)模式,您可以單元測試您的邏輯而不依賴於UI事件。 您也可以使用White framework來模擬用戶輸入。 我強烈建議您訪問微軟的Patterns&Practices developer center,特別是複合應用程序塊和Prism--您可以獲得大量關於測試驅動設計的信息。

0

單元測試時,與外界交流(即UI,數據庫等)的應用程序部分始終是問題。解決這個問題的方法實際上不是測試這些圖層,而是儘可能地減少它們。對於UI,您可以使用謙虛的對話框或視圖,該視圖不會執行任何值得測試的操作,然後將所有邏輯放入控制器或演示者類中。然後,您可以使用模擬框架或編寫您自己的模擬對象來製作視圖的假版本,以測試演示者或控制器中的邏輯。在數據庫方面,你可以做類似的事情。

測試事件並非不可能。例如,您可以爲引發事件的事件訂閱匿名方法,如果該事件被引發或計數該事件被拋出的次數。

1

Read this,如果你與UI測試

手動測試UI的東西,其中受益於自動化它是最小的代價掙扎。無情地測試UI皮膚下的所有內容。使用Humble Dialog,MVC或變體來保持邏輯和UI的獨特和鬆散耦合。