2010-12-14 5 views
2

クリックイベントハンドラにコアロジックが含まれているボタンを持つユーザーコントロールがあります。このボタンのクリックハンドラをテストしたい。 このハンドラ関数は、最終的に参照アセンブリのpublic関数を呼び出す別のユーザーコントロール(別の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のためのユニットテストに属し、参照ライブラリを呼び出します。

関連する問題