Устали от ручных мастеров, я пытаюсь ввести Mockito в свой проект.Альтернативы частичным издевательствам?
Предположим, у меня есть куча аксессуаров базы данных, которые изолируют все запросы Hibernate для данного варианта использования (или службы). Поэтому у меня могут быть такие интерфейсы, как RoutingDao
, UserDao
, ReportingDao
. Каждый из этих интерфейсов распространяет очень общий Dao
с такими методами, как commit()
, rollback()
или reload(Entity)
. С Hibernate последний должен перезагрузить отдельный объект с текущим сеансом. В тестах он должен просто вернуть свой аргумент.
С ручными мастерами это было легко: у меня был MockDao
с общей реализацией этого метода, и MockRoutingDao
расширил бы MockDao
и использовал бы эту реализацию. Один из способов, который я вижу с Mockito, - создать MockRoutingDao
, который расширяет MockDao
и делегирует ему незаписанные вызовы. Не унаследованные методы будут издеваться над spy()
. Но это довольно уродливо - мне все еще нужно ручное макет, и вся идея частичного издевательства наследования для повторного использования некоторой реализации - беспорядок.
Как его улучшить? Каковы наилучшие методы создания общей реализации для макетного метода, который можно использовать повторно во многих тестах?
Вы смотрите на EasyMock? – Griff
@Griff Powermock также отличный инструмент – PaoloVictor
Powermock предназначен для насмешливой статики и рядовых (он делает это, вызывая другой загрузчик классов); он используется * в сочетании с * насмешливой структурой, такой как Mockito или EasyMock. – tpdi