У меня есть упрощенная версия моей проблемы. Класс A имеет защищенный метод. Класс B наследует этот метод.Mock унаследованный защищенный метод
public class A{
protected String getString(){
//some Code
}
}
public class B extends A{
public void doSomething(){
//someCode
String result = getString();
}
}
Я сейчас пишу юнит-тест с Mockito, который находится в другом пакете-тест, и я хочу, чтобы проверить метод doSomething()
. Для этого мне нужно высмеять вызов getString(). Поскольку метод защищен и мой тестовый класс находится в пакете differnet, я не могу использовать doReturn(...).when(classUnderTest).getString()
. Дело в том, что я шпионить за классом B. Поэтому я не могу использовать mock(new B(), Mockito.CALLS_REAL_METHODS)
.
Я пытался получать защищенный метод с помощью отражения:
Method getString = classUnderTest.getClass().getDeclaredMethod("getString");
getString.setAccessible(true);
Но я тогда не знаю, как использовать это в doReturn()
.
Почему вы пытаетесь проверить то, что не в том же пакете, где вы проверяете его? Это может быть первое, что вы хотите исправить. – Makoto