4

他のオブジェクトを含む単一のクラスの単体テストを作成する場合、使用する最良の方法は何ですか?

オブジェクトをモックして、他のクラスに依存するテストを回避します。

例 1:

public class MyClass
{
   protected MyObject _obj;

   public MyClass()
   {
       _obj = new MyObject();
   }

   public object DoSomething()
   {
      //some work
      _obj.MethodCall();
      //more work;
      return result;
   }
}

コードの単体テストを作成するために保護された値を公開したくありません。ラッパークラスは

テスト用に動作しますが、より良い方法はありますか?

例 2:

public class MyClass
{

   public object DoSomething()
   {

      //some work
      MyObject obj = new obj(parameters);
      _obj.MethodCall(Method1);
      //more work;
      return result;
   }

   public int Method1()
   { ... }    

}

上記の例と似ていますが、呼び出しているメソッドでオブジェクトが作成されます。

例 3:

public class MyClass
{

   public object DoSomething()
   {

      //some work
      obj.MethodCall(Method1);
      //more work;
      return result;
   }

   public int MethodA()
   { ... }    

}

デリゲートとしてのみ使用されている場合に MethodA をテストする方法はありますか?

4

2 に答える 2

1

依存性注入を検討することをお勧めします。1つはモックオブジェクトを使用することですが、基本的にコードをその場で変更できるTypeMockのようなものを使用していない限り、クラスが依存するインスタンスを削除したい場合は、インスタンスを注入する方法が必要です.依存関係。したがって、例 1 では、コンストラクターで MyObject のインスタンスを新しく作成する代わりに、呼び出し元にそのインスタンスを提供させることをお勧めします。その場合、モックまたはスタブでさえも簡単に置き換えることができます。

于 2008-11-20T22:49:13.253 に答える
0

MyClass から UTMyClass を派生させてみましたか?

于 2008-11-20T22:48:52.163 に答える