我是Mockito和单元测试的新手,所以这里有一个基本的问题。给定这个类:
public class A{
private B b;
public A(){
b = new B();
}
private void test(){
b.some_other_method();
}
}
这不会成功地在链上存根吗?
a = Mockito.mock(A.class);
b = Mockito.mock(B.class);
Mockito.when(b.some_other_method()).thenReturn("testing");
a.test();
谢谢!
这将不起作用,因为测试中的b
与a类中的b
是不同的实例。
还要记住,在测试中不应该嘲弄类。我在另一个答案中写了一个总结,但足以说明您应该在应该测试a的测试中使用真实 a和模拟 B。
你可以这样插入你的B实例,例如:
public class A{
private B b;
public A(){
b = new B();
}
/** Package private constructor used for testing. */
A(B b){
this.b = b;
}
private void test(){
b.some_other_method();
}
}
此时,您只需在测试中调用new A(b)
,参考您的模拟B实例。