您应该使用它的接口。
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-01 08:40:25
不是真的......这基本上是这样做的方式。在开发过程中最好牢记测试,因此您不必回头修改。接口使您可以松散地耦合对象的依赖关系的实现,以便轻松测试它们。 – Alan 2013-03-01 09:15:51
明白了。将来我会努力发展,牢记这一点。但是如果memberInstance是一个Container类的私有字段,如何在test方法中实例化memberInstance? – 2013-03-01 10:21:45