2010-12-14 75 views
2

我有一個用戶控件,它具有單擊事件處理程序包含核心邏輯的按鈕。我想測試這個按鈕點擊處理程序。 該處理程序函數調用另一個用戶控件(駐留在單獨的C#項目中)的公共函數,該函數最終調用引用程序集的公共函數。 任何人都可以請告訴我 - 如何將這種處理程序的單元測試?如何單元測試(用C#)單擊按鈕?

回答

3

在單元測試中,我們測試的設備 - 在這種情況下,用戶的控制。沒有別的了。但我們不應該允許用戶控制訪問外部世界,我們應該使用嘲諷技術。 在例子中,如果您的通話UserControlA UserControlB,創建UserControlB接口和一個模擬UserControlB替換:

class UserControlA { 
     UserControlBInterface BReference; 
     public void setBReference(UserControlBInterface reference) { this.BReference = reference }; 
     void OnClick (...) { BReference.callAMethod(); } 
    } 
    class MockupForB : UserControlBInterface { 
     boolean called=false; 
     public void callAMethod() { this.called = true; } 

    } 
    class TesterA : UnitTest { 
     public void testOnClick() 
     { UserControlA a = new UserControlA(); MockupForB mockup = new MockupForB(); a.setBReference(mockup); 
      a.Button1.PerformClick(...); //following Aaronontheweb's advice 
      assertTrue(mockup.called,"the method callAMethod not being called by UserControlA"); 
     } 
    } 

並確保UserControlB確實調用一個參考圖書館,這屬於對UserControlB單元測試。