我希望你能帮助翻译IT技术相关内容,以下是需要翻译的内容:
我在mockito.spy方法中遇到了麻烦。
最近我加入了一个“老”项目,我的第一个任务是在其中添加mockito,并进行真正的单元测试 :)
该项目存在许多概念上的问题,但这不是重点 ;)
我来解释一下我的问题:
我有一个类
public class Tutu{
public Tutu(){
}
}
public class Toto{
public Toto(){
}
public int executeToto(Tutu tutu){
//do some stuff
return 5;
}
}
public class Titi{
private Toto toto;
public Titi(){
this.toto = new Toto();
}
public void executeTiti(){
//do some stuff
Tutu tutu = new Tutu();
int ret = this.toto.executeToto(tutu);
//do some stuff
}
}
在我的测试类TitiTest.java中,我只想测试executeTiti方法,不想测试executeToto的内容,因为这个类有自己的测试类TotoTest.java。
但是你可以看到,toto在titi构造函数中被实例化,所以我尝试了以下代码: (我在我的测试中也使用了PowerMock,所以我正在使用PowerMockRunner,但似乎不是问题的原因)
@RunWith(PowerMockRunner.class)
public class TitiTest {
@Test
public void testExecuteTiti(){
Toto toto = Mockito.spy(new Toto());
Mockito.doReturn(2).when(toto).executeToto(Mockito.any(Tutu.class));
Titi testedObject = new Titi();
testedObject.executeTiti();
}
}
但是真正的方法总是每次调用并且ret = 5 :(
我错过了什么吗?我在stackoverflow上阅读了许多帖子,并尝试了所有解决方案,但从未奏效,因为我认为我做得很正确。
我使用junit4.11/powermock1.5.4/mockito1.9.5