Мой метод шпионажа mockito не работает. Ошибка несоответствия типа - PullRequest
0 голосов
/ 07 мая 2020

Использование mockito в первый раз, и шпион, похоже, не работает, и выдает ошибку, когда я пытаюсь его использовать.

Я использую 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. </p>

.mock работает нормально.

Рекомендует 1 исправление: добавить приведение к 'ClassA'.

Это происходит со всеми классами, которые Я пытаюсь шпионить, а не только ClassA.

Я также знаю, что если я использую вместо него @Spy Annotation, я не получаю ошибок, но насмешка прямо не может имитировать, как мои методы «когда» запускаются настоящие методы вместо надуманных.

Мой импорт mockito:

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

EDIT: Добавление иерархии классов ...

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

Если бы кто-нибудь мог помогите мне, это будет очень признательно!

Спасибо.

1 Ответ

0 голосов
/ 07 мая 2020

Этот пример работает для меня:

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 {}
}

Если он работает и на вашей стороне, возможно, у вас есть отправная точка, и вы можете продвигать ее, пока не возникнет проблема.

...