2015-05-11 3 views
7

Я работаю над проектом, в котором мы сейчас проводим тестирование с JUnit и Mockito. Теперь я пытаюсь выяснить, какими будут побочные эффекты добавления PowerMock в микс.Почему не PowerMock

В чем его недостатки, какие-либо зависимости, о которых я должен знать, любые проблемы стабильности?

Я видел, что поддерживает Java 8. Есть ли там какие-либо проблемы? Из того, что я читал, получение поддержки Java 7 было довольно долгим.

EDIT: Я предполагаю, что вопросы, сумма будет все это было бы:

Что бы причины не использовать PowerMock?

+0

Можете ли вы быть более конкретным, каким образом вы боитесь, что PowerMock может оказаться ненадежным? –

+0

Кроме того, пожалуйста, ограничьте количество вопросов одной или, по крайней мере, одной концепцией, поскольку она стоит сейчас, столбец попадает прямо в категорию [«непонятно, что вы спрашиваете»] (http://stackoverflow.com/ помощь/Застекленные вопросы). –

+0

Надеюсь, теперь это немного более понятно. И он также говорит на своей домашней странице «Ввод его в руки младших разработчиков может нанести больше вреда, чем пользы». – KKO

ответ

27

Как правило, если вы начинаете новый проект и хотите (хотите/вынуждены) использовать PowerMock из-за архитектуры вашего кода, это означает, что эта архитектура плоха и нуждается в улучшении. Power Mock дает вам доступ к макету статических методов, конструкторов и т. Д., И это означает, что ваш код не соответствует лучшим принципам программирования.

Power Mock следует использовать в старых приложениях, где вы не можете изменить код, предоставленный вам. Часто такой код не имеет тестов на единицу/интеграцию, и даже небольшие изменения могут приводить к ошибкам в приложении.

+2

Это наиболее подходящий ответ. Power Mock является (очень полезным) специальным инструментом для создания устаревшего, вонючего или иначе «сложного» кода, который можно тестировать (хорошим примером, который не является запахом кода, будет насмехаться над «финальными» классами), используя его широко в активно разработанном коде база может быть признаком проблемы. –

+0

Хорошо, я понимаю, что powermock следует использовать только для устаревшего кода, а не для новых проектов. Я не понимаю, почему «почему»? Возникают ли какие-либо проблемы, если вы используете их для новых проектов?Иногда могут быть статические классы, возможно даже окончательные, которые необходимо протестировать, правильно? – KKO

+0

В основном это дизайн кода. Хороший и чистый код не требует наличия статических методов f.e, которые трудно проверить. Помимо использования их используют легкие и слабо связанные услуги. См. Http://stackoverflow.com/questions/871434/java-utility-class-vs-service. Но, конечно, это зависит от того, чего вы хотите достичь в своей системе. – wsl

Смежные вопросы