【发布时间】:2014-03-13 09:29:52
【问题描述】:
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
【问题讨论】: