首页 > 解决方案 > 我的 mockito 间谍方法不起作用。类型不匹配错误

问题描述

第一次使用mockito,spy 似乎不起作用,当我尝试使用它时会出错。

我正在使用mockito-core version 2.7.22,但我也尝试过version 3.3.0,问题仍然存在。

这是一些伪代码示例。我在 ClassA 中测试一个方法:

public class ClassATest{

    private ClassA classAMock;

    private ClassB classBMock;

    private ClassC classCMock;


    @Before
    public void setUp() {
        ClassBMock = Mockito.mock(ClassB.class);
        ClassCMock = Mockito.mock(ClassC.class);

        ClassAMock = Mockito.spy(ClassA.class);

    }


.spy 行给出了一个错误,上面写着:

类型不匹配。无法从 Class >ClassA< 转换为 ClassA。

.mock工作正常。

推荐 1 个修复:将演员表添加到“ClassA”。

这发生在我试图监视的所有类中,而不仅仅是ClassA.

我也知道,如果我@Spy Annotation改用,我不会收到任何错误,但是模拟完全无法模拟,就像我的“何时”方法运行真实方法而不是模拟的方法一样。

我的模拟进口是:

import org.mockito.Mockito;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.when;

编辑:添加类层次结构...

public class ClassA{}
public class ClassB{}
public class ClassC{}

如果有人可以帮助我,将不胜感激!

谢谢。

标签: javajunitmockingmockito

解决方案


这个例子对我有用:

public class ClassATest {

    private ClassA classAMock;
    private ClassB classBMock;
    private ClassC classCMock;

    @Before
    public void setUp() {
        classAMock = Mockito.spy(ClassA.class);
        classBMock = Mockito.mock(ClassB.class);
        classCMock = Mockito.mock(ClassC.class);
    }

    @Test
    public void test() {
        System.out.println(classAMock.getClass());
    }

    public static class ClassA {}
    public static class ClassB {}
    public static class ClassC {}
}

如果它也在你身边,也许你有一个起点,你可以推进它直到问题发生。


推荐阅读