我遇到了mockito.spy方法的麻烦。Mockito间谍方法不起作用
我最近刚到一个“老”的项目,我的首要任务是增加它的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是实例化蒂蒂构造,所以我尝试这样: (我使用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,每次:(
难道我错过了什么?我看了很多帖子这个对计算器,并尝试所有的解决方案,但它从来没有工作,因为我认为我在做正确的事
我用junit4.11/powermock1.5.4/mockito1.9.5
你好,谢谢你的帮助,发表我的问题后,我终于改变了构造函数来传递好的实例及其工作。我只想知道是否有另一个解决方案,因为它是遗留代码,没有测试,我不想触摸现有的代码,但即时通讯同意你,我在这种情况下没有选择:)谢谢 –
我觉得遗留代码的快速重构很容易使测试更好,但您可以在答案中追求PowerMockito解决方案,而无需更改任何生产代码。您可能需要调整PowerMockito代码;我的经验是有限的。祝你好运! –