Mockito: Структура проекта

| Комментарии

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-тестами и немного захламленную структуру проекта.

Comments