使用 mockito 在测试 class 中模拟新实例创建

Mocking new instance creation inside testing class using mockito

我正在尝试在我正在测试的 class 中模拟一个对象的新实例,但我正在努力寻找使用 Mockito 执行此操作的方法。

如果我理解正确的话,这可能是可以使用 Powermock 实现的,但我只有 Mockito 可供我使用。

这是我正在尝试做的事情

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

我目前正在监视 MyTest class 并想模拟新对象以便我可以操纵 obj.getSomething()

的结果

这可以使用 Mockito 实现吗? 谢谢

恕我直言,正如您已经说过的那样,在您的情况下一切都比使用 Powermock 更好。

在类似的情况下,我使用的解决方案将 "unmockable" 代码放在尽可能小的方法中,并且 @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();
        }
    }
}