2014-04-02 4 views
3

Мой вопрос связан с каркасом Mockito и методами, которые можно протестировать.Уровень доступа к методу и методу

Публичные методы могут быть хорошо протестированы.

Частные методы не могут быть протестированы в Mockito, но их можно протестировать в других смехотворных рамках.

Что с защищенными методами и методами без уровня доступа (пакет-частный)? Как я заметил, защищенные методы могут быть протестированы путем создания унаследованного подкласса с общедоступным методом. Каков наилучший способ тестирования этих методов?

+0

Mockito - это насмешливый фреймворк: он создает издевательства, позволяет нам определять их компоновку и делать проверки на этих издевательствах. Что вы подразумеваете под «можно протестировать»? –

+0

Например, проверьте некоторые методы или определите возвращаемый параметр. – Pawel

+0

https://code.google.com/p/mockito/wiki/FAQ (см. Ограничения), для защищенных/дефолтных, обычно не следует издеваться (слишком низкий уровень) –

ответ

2

Я не уверен, что я понимаю отношение к Mockito в этом случае, как если бы вы тестировали метод, вы действительно не хотите издеваться над этим классом. Чтобы ответить на ваш вопрос, есть несколько вариантов:

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

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

+0

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

+0

Модификаторы частных методов могут быть изменены, поэтому мы можем протестировать все. – Pawel

+0

Да, это один из вариантов, но что, если тест находится в разных пакетах? Если у меня есть пакет с исходным кодом и пакетом с тестом? – Pawel

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