Можно ли высмеять сообщение буфера протокола Java?

Классы буферов протокола отмечены final, предположительно для эффективности; однако это затрудняет их тестирование - Mockito не может издеваться над последними классами. Я пробовал использовать PowerMockito без успеха: я получаю ClassFormatError при подготовке класса final для теста.

Мое решение до сих пор заключается в создании макетов адаптивных интерфейсов, но я надеюсь на менее трудоемкий подход.

Ответы

Ответ 1

JMockit может обрабатывать final и static. Просто обратите внимание на то, как его настроить, так как для этого требуется параметр JVM -javaagent, или изменения пути к классу, или дополнительные аннотации, чтобы можно было имитировать вещи final и static.

Ответ 2

JDave имеет Unfinalizer, который интегрируется с JMock ClassImposteriser

Он не может отформатировать классы, загруженные из загрузчика классов загрузки, и для запуска тестов требуется аргумент виртуальной машины.