java - 使用mockito在测试类中模拟新实例的创建

标签 java initialization mockito spy

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

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

这就是我想做的

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

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

使用 Mockito 可以实现这一目标吗? 谢谢

最佳答案

恕我直言,正如您已经说过的,您的情况比使用 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();
        }
    }
}

关于java - 使用mockito在测试类中模拟新实例的创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55329877/

相关文章:

Java 8 Stream 修改可变变量

java - 从外部库 jython 导入

java - 如何使用简单的html表单从rest服务中获取值(value)?

c++ - 诠释 x;整数y;诠释*ptr;不是初始化吧?

c++ - cocos2d-x 中变量的一次初始化

android - 如何为单元测试期间流程中调用的静态方法返回不同的值?

java - 打印数字的值会产生意想不到的结果

c++ - 对于具有相同类型成员但定义顺序不同的结构体,复制列表初始化赋值具有不同的结果

java - Android JUnit 中模拟方法调用的结果为 null

java - 获取 junit.framework.AssertionFailedError : No tests found in [package] when using Unit and Mockito