Я уже много лет болею за EasyMock, и благодаря SO я столкнулся с ссылками на PowerMock и его способность издеваться над конструкторами и статическими методами, из-за которых возникают проблемы при переоснащении тестов на устаревшую кодовую базу.
Очевидно, что одним из огромных преимуществ модульного тестирования (и TDD) является то, как он приводит (усиливает?) гораздо более чистый дизайн, и мне кажется, что введение PowerMock может отвлечь его. Я бы увидел, что это в основном проявляется как:
- Возвращаясь к инициализации коллабораторов, а не к их вложению
- Использование статики, а не использование метода соавтором
В дополнение к этому, что-то не совсем подходит ко мне, когда мой код управляется байт-кодом для теста. Я не могу дать конкретную причину этого, просто потому, что это заставляет меня чувствовать себя немного неловко, как для теста, а не для производства.
На моем нынешнем концерте мы действительно настаиваем на модульных тестах, чтобы люди могли улучшить свои методы кодирования, и похоже, что введение PowerMock в уравнение может позволить людям немного пропустить этот шаг, и поэтому я не хочу начинать используй это. Сказав это, я действительно смогу понять, где его использование может сократить объем рефакторинга, который необходимо выполнить, чтобы начать тестирование класса.
Я полагаю, что мой вопрос в том, какие люди используют PowerMock (или любую другую подобную библиотеку) для этих функций, могли бы вы использовать их и сколько всего вы хотите, чтобы ваши тесты влияли на ваш дизайн?