Mockito - библиотека для динамического создания mock-объектов и манипуляции ими. Разработка начата в 2007’ом году польским разработчиком Стивеном Фабером (Szczepan Faber). Первый релиз выпущен в 2008’ом. Последний в начале июня 2012’го. Официальный сайт находится на Google Code’e. Issue Tracker и Wiki там же, но в репозитории сохранились текстовые файлы с заметками и планами на будущее.
VCS - Mercurial.
В качестве CI используется Jenkins.
Основной build tool - Ant. Осуществляется переход на Gradle. Это логично, т.к. основной разработчик Mockito работает главным инженером в Gradleware. Из комментариев gradle-скрипта:
# В определенный момент мы полностью перейдем на Gradle. Сейчас же Mockito находится в состоянии миграции на новый build tool и тем самым показывает как Ant и Gradle могут сосуществовать (для сборки из Gradle-скрипта вызывается соответствующий target Ant-скрипта).
В составе проекта идет утилита gradle-wrapper (gradlew), которая позволяет собирать проект без предустановленного Gradle.
Для распространения через Maven репозиторий на версионный контроль добавлены заготовки pom скриптов, но использовать Maven в качестве инструмента для сборки проекта разработчики скорее всего не будут(о чем свидетельствуют комментарии разработчиков).
На версионный контроль поставлены файлы проектов Eclipse и Intelij IDEA, что очень хорошо для слабо задокументированного в области разработки Open Source проекта. В проекте используется Checkstyle, его конфигурация также есть на версионном контроле.
В скрипте сборке используются Ant-расширения:
- PMD - это аналог Findbug’a, выполненный в виде библиотеки. Используется для анализа кода на наличие потенциальных проблем.
- JarJar - продвинутый аналог стандартной таски Jar. Основное отличие - перепаковка внешних jar’ок. Используется для сборки jar’ок mockito.
- Ant4HG - набор Task для работы с mercurial. Используется для деплоя изменений на версионный контроль и CI.
- Maven Ant Tasks - набор Task для выполнения pom-скриптов и работы с Maven репозиториями. Используется для деплоя релизов проекта в локальный и удаленный репозитории.
Исходный код обильно покрыт тестами. Есть пакет с примером использования Mockito: org.mockitousage.examples.use
. Это неплохая точка отсчета в изучении архитектуры проекта. К тому же во многих примерах JavaDoc документации Mockito используются объекты из этого пакета.
Непосредственно исходный код проекта разделен на две части. Внешнее API проекта (пакет org.mockito
) и внутренняя реализация (пакет org.mockito.internal
). Достаточно странный подход в разработке, т.к. разделение, в основном, условное и ничто не мешает им пренебречь ни разработчику Mockito, ни пользователю этой библиотеки.
На данном этапе стоит отметить продвинутый build-скрипт, хорошее покрытие unit-тестами и немного захламленную структуру проекта.