我一直在使用模式一段時間。我想知道我是否做對了。我有一個監聽事件的控制器類,並在引發事件時執行私有方法。它會有點像這樣:單元測試事件觸發行爲
public class MyController
{
public MyController(IMyEventRaiser eventRaisingObject)
{
eventRaisingObject.MyEvent += HandleEvent;
}
private void HandleEvent(object sender, EventArgs args)
{
// SOME STUFF I WANT TO TEST!!
}
}
public class EventRaisingClass : IMyEventRaiser
{
public event EventHandler<EventArgs> MyEvent;
}
來測試MyController.HandleEvent代碼的唯一方法是創建一個存根:IMyEventRaiser是提高了代碼。
我不確定這個設計是否合適。一方面,我想保持HandleEvent方法是私人的,以便說明只有一個事件可以觸發它。另一方面,私有方法包含關鍵的業務邏輯,所以我覺得它應該是公開的或者至少是內部的,這也使得單元測試更容易。
你很多想什麼?
問候, 莫滕
你在做什麼沒有什麼不妥。一個評論雖然:你可能需要一個*模擬*,甚至一個*假*,而不是*存根*。通常情況下,存根不會做任何事情,也不會觸發任何事件。 – 2011-02-25 09:22:13
爲什麼不使用私有訪問器(即反射)來像測試其他私有方法一樣測試私有方法? – Massif 2011-02-25 09:15:31
這對我來說是一個未知的程序。一定會看看它:-) – Morten 2011-02-25 09:18:05