我已经将对象创建封装到中指定的新方法中https://code.google.com/p/mockito/wiki/MockingObjectCreation[模式1:使用单行方法创建对象]
在makeFoo方法之前,我使用过private。这让我的工作更加努力。
makeFoo方法难道不需要私有化吗?如果是,人们是如何处理的?
如果您使方法protected
,您可以在SUT的测试double中覆盖它。通过这种方式,您可以使方法返回一些mock、spy或其他类型的双重测试。
但是,如果可能的话,我建议您在构造函数中注入依赖类。它为您省去了一些头痛和锅炉板代码。在某些情况下,受保护的工厂方法是一个"更好"的解决方案,只是需要记住。
EDIT:构造函数注入示例:
从这个
public class MyClass
{
private SomeDependency someDependency;
public MyClass()
{
this.someDependency = new SomeDependency(new A(), new B());
}
public void doWork()
{
_someDependency.doSomething();
}
}
到此
public class MyClass
{
private SomeDependency someDependency;
public MyClass(SomeDependency someDependency)
{
this.someDependency = someDependency;
}
public void doWork()
{
this.someDependency.doSomething();
}
}
这允许您直接为类注入测试double,而不是继承它并重写某些工厂方法。