1

请看下面的代码

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

比如说,众所周知 xyz 方法返回 1-10 之间的数字。现在,我想为 sum 方法开发单元测试方法,我想用任意返回值 [1-10 之间的任何值]替换方法调用memberInstance.xyz(a )。请让我知道我该如何实现?如果可能,请提供示例代码。

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,一个适合您的框架是“Mock You”

于 2013-03-01T06:28:42.673 回答