Ну, вы должны быть осторожны с этим: по умолчанию, вы не можете смоделировать окончательные классы (например, String
). Это известное ограничение каркаса.
Ваш пример мне не удался с правильным сообщением об ошибке:
org.mockito.exceptions.base.MockitoException:
Cannot mock/spy class java.lang.String
Mockito cannot mock/spy following:
- final classes
- anonymous classes
- primitive types
at Test.testShouldFail(Test.java:6)
...
Так что я думаю, что в вашем проекте могут быть небольшие проблемы с конфигурацией. Какой IDE вы используете? Какая версия Mockito у вас есть? Как вы проводите свои тесты?
Вы можете попробовать использовать какой-нибудь дополнительный инструментарий, например PowerMock , который поможет вам преодолеть это ограничение . Этот фреймворк довольно легко можно использовать в сочетании с Mockito.
С другой стороны, String
является частью пакета java.lang
, и я предполагаю, что есть несколько дополнительных проверок безопасности, связанных с этими классами со стороны виртуальной машины (хотя я не уверен). Я не уверен, что вы можете имитировать (то есть манипулировать байт-кодом) такого класса (например, вы получаете ошибку компиляции, если вы пытаетесь поместить что-то в пакет java.*
). Но это только предположение с моей стороны.