为包含其他对象的单个类编写单元测试时,最好的方法是使用
模拟对象以避免依赖于其他类的测试。
示例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()
{ ... }
}
与上面的例子类似,但ojbect是在我调用的方法中创建的。
示例3:
public class MyClass
{
public object DoSomething()
{
//some work
obj.MethodCall(Method1);
//more work;
return result;
}
public int MethodA()
{ ... }
}
当它仅用作委托时,有没有办法测试MethodA?
答案 0 :(得分:1)
我建议你看一下依赖注入。有一件事是使用模拟对象,但除非你使用像TypeMock这样的东西,它基本上允许你动态修改你的代码,你想要有一种方法来注入你的类所依赖的实例,如果你想摆脱它依赖。所以在示例1中,我建议不要在构造函数中新建一个MyObject实例,而是让调用者提供该实例。在这种情况下,您可以轻松地将其替换为模拟或甚至存根。
答案 1 :(得分:0)
您是否尝试从MyClass派生UTMyClass?