Как издеваться над вызовом метода приватного члена суперкласса? - PullRequest
1 голос
/ 06 июля 2019

У меня есть класс (класс B), который расширяет родительский класс (класс A).У родительского класса есть открытый метод (метод X), который вызывает метод одного из его закрытых полей-членов (поле f> метод Y).Я пытаюсь написать модульный тест, чтобы протестировать метод класса B. Однако мне нужно смоделировать вызов метода X, который наследуется классом B. Однако при попытке вызвать метод Y это дает мне ошибку нулевого указателя.в методе X. Я не уверен, как смоделировать поле f из класса B. Может ли кто-нибудь помочь мне с этим?

Я использую Mockito для написания теста.Поле f является автоматическим.Я хотел бы избежать добавления нового кода в файл, так как это не мой код.Я попробовал:

@Mock
field f;
doReturn(someReturnValue).when(f).Y();

Но это не называется.Я чувствую, что это потому, что в классе B. нет поля f.

Текущая настройка выглядит примерно так:

class A{
  @Autowired
  private Object f;

  public void X(){
    Map<String, Object> map = new HashMap<>();
    map.putAll(f.Y());  // NPE thrown here
  }
};

class B extends A{
};

Попытка смоделировать поле f в моем модульном тесте выдает нольошибка указателя в строке, где выполняется вызов fY ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...