使用驗證測試(www.approvaltests.com或nuget)對View進行測試的單元足夠簡單。這裏有一個視頻:http://www.youtube.com/watch?v=hKeKBjoSfJ8
但是,它似乎也是你擔心爲了能夠測試功能的目的而默認或公開一個函數。
這些通常被稱爲接縫;進入你的代碼進行測試的方法。 他們很好。有時候,人們會將私人/公衆與安全混爲一談,並且不敢公開私人職能,但反思也會稱之爲安全,所以它不是很安全。有時候人們會擔心API的接口。但是,如果你有一個公共的API,並且如果你有一個winform應用程序,這可能意味着它是最高級別的(沒有其他消費者會這麼稱呼它)。
你是程序員,因此可以設計你的代碼以便於測試。這通常意味着比改變一些方法的公共和創建一些connivence方法,使依賴關係在傳遞多一點
例如:
buttonclick += (o,e)=> {/*somecode*/};
是很難測試。
private void button1_Click(object sender, EventArgs e) {/*somecode*/}
仍難以測試
public void button1_Click(object sender, EventArgs e) {/*somecode*/}
更容易測試
private void button1_Click(object sender, EventArgs e) { DoSave();}
public void DoSave(){/*somecode*/}
真的很容易測試!
如果您需要事件中的某些信息,這會增加一倍。即。
public void ZoomInto(int x, int y)
更容易測試對應的鼠標點擊事件,並直通電話仍然可以是一個可忽略的線。
OK我有,但是如果我有我的形式訪問我的商業邏輯1種或2的公共方法,並在我的業務邏輯,並依次訪問私有方法,它足以給公衆接口測試,以我的形式業務邏輯?而不是寫單元測試直接測試我的私有方法? – DukeOfMarmalade 2012-02-01 14:39:23
@Jim - 是的,這被認爲是可以接受的我的很多,因爲測試的公共方法是行使私有方法中的代碼。 (這真的不會比移除私有方法和公有方法內的代碼轉移到內部的塊太大的不同。) – ziesemer 2012-02-01 14:43:48
同意了!謝謝! – DukeOfMarmalade 2012-02-01 14:57:20