单元测试调用另一个类的其他方法的方法

时间:2013-03-01 06:21:29

标签: c# .net visual-studio-2010

请查看以下代码

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 )。请让我知道如何实现这一目标?如果可能,请提供示例代码。

2 个答案:

答案 0 :(得分: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传递给要测试的类。这样你可以用测试类伪造它(模拟实现)

答案 1 :(得分:0)

您正在寻找Mocking,一个适合您的框架是"Mock You"