如果注入Bar实例,或用于创建Bar实例的工厂(或其他483种方法之一),则你将具有执行测试所需的访问权限。
工厂示例:
给定一个这样的Foo类:
public class Foo { private BarFactory barFactory; public Foo(BarFactory factory) { this.barFactory = factory; } public void foo() { Bar bar = this.barFactory.createBar(); bar.someMethod(); }}在你的测试方法中,你可以像这样注入BarFactory:
@Testpublic void testDoFoo() { Bar bar = mock(Bar.class); BarFactory myFactory = new BarFactory() { public Bar createBar() { return bar;} }; Foo foo = new Foo(myFactory); foo.foo(); verify(bar, times(1)).someMethod();}奖励:这是TDD如何推动代码设计的一个示例。



