使用Mockito模拟测试类中的新实例创建

时间:2019-03-25 00:21:34

标签: java initialization mockito spy

我正在尝试在我正在测试的类中模拟对象的新实例,但是我正在努力寻找一种使用Mockito做到这一点的方法。

如果我正确理解了这一点,那么使用Powermock可以实现此目的,但是我只能使用Mockito。

这就是我想要做的

   private class MyTestClass{
      private doSomethingMethod(){
        Object obj = new Object();
        obj.getSomething;
      }
   }

我目前正在监视MyTest类,并希望模拟新的Object,以便可以操纵obj.getSomething()的结果

使用Mockito可以实现吗? 谢谢

1 个答案:

答案 0 :(得分:0)

您已经说过,恕我直言,一切比使用Powermock更好。

在类似的情况下,我正在使用一种解决方案,将“不可模仿的”代码放入尽可能小的方法中,并@Spy放在这样的地方:

public class SpyTest {
    @Spy
    private MyTestClass myTestClass;

    @Before
    public void initMocks() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void spyInsteadOfPowermock() {
        when(myTestClass.getObject()).thenReturn(Integer.valueOf(3));

        assertThat(myTestClass.doSomethingMethod()).isEqualTo("3");
    }

    class MyTestClass{
        public String doSomethingMethod(){
            return getObject().toString();
        }

        Object getObject() {
            return new Object();
        }
    }
}