Как статические методы макетируются в любой Mocking Framework, такой как JMockit, PowerMocks? - PullRequest
3 голосов
/ 01 октября 2011

Я узнал, что мы можем высмеивать статические методы, используя базовую библиотеку java с PowerMock? Jmockit. Хотите вкратце понять, как это происходит внутренне?

Мое понимание: - Поскольку мы определяем фиктивный класс в самом тестовом примере (хотя существуют разные способы создания фиктивного класса в каждой среде, например, используя синтаксис ожидания в Jmockit), эти рамки должны определять пользовательский загрузчик классов, через который они должны искать это определение класса внутри самого тестового набора. Это Угадай. Не уверен, что это правильно? Но даже если я прав, предпочтение для classloader hirerchy - это boootstraploader, а не applicationclassloader, а customerclassloader. Так как же он выбирается из клиентского загрузчика классов вместо загрузчика приложений?

1 Ответ

5 голосов
/ 01 октября 2011

JMockit и другие более новые фреймворки основаны на фреймворке Java 1.5 Instrumentation.Это позволяет вам переопределить приватные, статические и финальные методы.Даже конструкторы без аргументов могут быть переопределены.

В этих средах используется Java-агент, который представляет собой подключаемую библиотеку, которая запускается встроенной в JVM и перехватывает процесс загрузки классов и может помочь в обработке байт-кода классов.

Вы можете проверить инструментарий Java в глубоком и http://jmockit.googlecode.com/svn/trunk/www/about.html

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