1

次のコードを見てください

int sum(int a, int b)
{
    int x = memberInstance.xyz(a); // memberInstance is an object of another class
    .....
    .....
}

たとえば、xyz メソッドが 1 ~ 10 の数値を返すことも知られています。今、sum メソッドの単体テスト メソッドを開発したいと思います。メソッド呼び出しmemberInstance.xyz(a ) を任意の戻り値 [1 ~ 10 の任意の値] に置き換えたいと思います。どうすればそれを達成できるか教えてください。可能であれば、サンプルコードを提供してください。

4

2 に答える 2

5

インターフェースを使用する必要があります。

public interface IMemberInstance
{
    int xyz {get;}
}

public class MemberInstance : IMemberInstance
{
 ... // the real class's implementation + code here
}

public class MockMemberInstance : IMemberInstance
{
   // the test class can return a test value
   int xyz(int a) { return 10; }
}

次に、テストするクラス (MyClass など) で

private IMemberInstance memberInstance;

public MyClass(IMemberInstance memberInstance)
{
    this.memberInstance = memberInstance;
}

int sum(int a, int b)
{
    int x = memberInstance.xyz(a); // memberInstance is an object of another class
    .....
    .....
}

テストするクラスに IMemberInstance を渡せるようにします。このようにして、テストクラス(モック実装)で偽造できます

于 2013-03-01T06:25:03.370 に答える
0

Mockingを探していて、そのフレームワークの 1 つが「Mock You」です。

于 2013-03-01T06:28:42.673 に答える