То, что вы хотите сделать, - это комбинация части из 1 и всех из 2.
Вам нужно использовать PowerMockito.mockStatic, чтобы включить статическое моделирование для всех статических методов класса. Это означает, что можно заглушать их, используя синтаксис when-thenReturn .
Но используемая вами перегрузка mockStatic с двумя аргументами предоставляет стратегию по умолчанию для того, что Mockito / PowerMock должен делать при вызове метода, который вы явно не заглушили в экземпляре макета.
Создает макет класса с заданной стратегией для его ответов на взаимодействия. Это довольно продвинутая функция, и обычно она вам не нужна для написания достойных тестов. Однако она может быть полезна при работе с устаревшими системами. Это ответ по умолчанию, поэтому он будет использоваться только тогда, когда вы не заглушаете вызов метода.
Стратегия заглушки по умолчанию по умолчанию заключается в том, чтобы просто возвращать null, 0 или false для методов object, number и с логическими значениями. Используя перегрузку из 2 аргументов, вы говорите: "Нет, нет, нет, по умолчанию используйте метод ответа этого подкласса Answer, чтобы получить значение по умолчанию. Он возвращает значение Long, поэтому, если у вас есть статические методы, которые возвращают что-то несовместимое с Long, возникает проблема.
Вместо этого используйте версию mockStatic с 1 аргументом, чтобы включить заглушку статических методов, затем используйте when-thenReturn, чтобы указать, что делать для конкретного метода. Например:
Статический метод со строковым значением заглушается, чтобы возвращать "Hello!", в то время как статический метод со значением int использует заглушку по умолчанию, возвращая 0.