2013-11-14 3 views
2

Я видел, что некоторые разработчики используют некоторые методы (а именно getInternalState()/setInternalState) от класса Whitebox.Можно ли использовать статические методы, найденные в классе Whitebox?

Мой вопрос заключается в том, является ли это хорошей практикой или нет? Я спрашиваю об этом, потому что этот класс находится в пакете org.mockito.internal.util.reflection и обычно классы внутри внутренний пакет не предназначен для использования внешним миром.

ответ

0

Если вы посмотрите на код, это не имеет большого значения. См. Здесь: https://code.google.com/p/mockito/source/browse/src/org/mockito/internal/util/reflection/Whitebox.java?r=9772247b067621ed5c3cefc356397b0bde5b89f6

Если он перемещен, вы можете выполнить полную замену тестового кода, который занимает 2 минуты. Если он каким-то образом будет удален из Mockito (что вряд ли я думаю), вы можете дублировать класс на свой код (~ 50 строк). Если есть какие-либо изменения, ваши тесты будут нарушены, и вы увидите, что вам нужно их изменить. Нет реальной возможности получить скрытые проблемы.

Поэтому я бы просто использовал его в тестовых кодах, если это необходимо.

0

поздний ответ, но я просто бегу в том, что:

Я думаю, что это плохо практика использовать все, что носит название «внутренний».

И для меня это приводит к значительным усилиям: я прямо сейчас обновляю нашу команду огромным и обнаруживаю, что некоторые люди использовали именно эту вещь.

И из-за этого; Я не могу обновить нашу установку до разумного mockito 2.6.2; но я думаю, что я вынужден пойти с powermock 1.66/mockito 2.0.42; потому что некоторые люди считали «ОК» использовать этот внутренний класс для своих тестов.

+0

Вы можете использовать его. –

+0

Я не понимаю, что вы имеете в виду? Изолировать этот класс или получить исходный код и поместить его в собственный проект? – GhostCat

+0

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

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