понедельник, 29 декабря 2008 г.

Тестирование Spring приложений

Эта статья - заготовка, для быстрой организации тестирования спринг приложений.
Рассмотрим типичную конфигурацию Spring + Hibernate. Для тестирования БЛ будет использоваться JUnit4. Заполнять БД тестовыми данными будем при помощи DBUnit. Для запуска тестов будет использоватся Ant(на билдсервере) и Eclipse (для дебага).
Полезная л-ра:
Класная статья о тестировании Spring-a в JUnit-е http://samolisov.blogspot.com/2008/07/spring-junit.html
Класная статья о JUnit4 http://www.ibm.com/developerworks/ru/edu/j-junit4/index.html
Итак нам понадобятся следующие библиотеки:
  1. драйвер БД (в моем примере mqsql-5.0.4)
  2. hibernate 3.3.1, hibernate-annotations 3.4
  3. spring-2.5.5
  4. для работы спринга: cglib 2.1, commons-lang 2.4, spring-modules 0.9
  5. для тестирования спринга в JUnit 4: spring-test (из spring-modules)
  6. junit 4.4
  7. логирование: commons-loging 1.0.4, commons-login-api 1.0.4, log4j 1.2.13
  8. заполнение тестовой БД-х: dbUnit 2.4.2
В заготовке используется схема из двух таблиц "bookcase" и "book", с типичной связью один ко многим. Бизнес модель состоит из трех модулей: млодуля сервисов, модели и DAO. Модель описывает сущности, DAO - описывает методы сохранения и выборки сущностей из БД используя Hibernate Criteria Queries (обекстную модель построения запросов), сервисы же предоставляют высокоуровневые бизнес методы. Для реализации бизнес методов сервисы используют DAO, но также они могут использовать и бизнес методы других сервисов. Так в заготовке "BookcaseService" использует методы другого сервиса "AnotherService".

Для тестирования сервиса "BookcaseService" используется класс "BookceseServiceTest". В нем есть пример:
  • использования dbunit при тестировании
  • создания сессии для использования в тестах обьектов использующих "hibernate lazy loading"
  • замещения сервиса ""AnotherService" сервисом "AnotherTestOverrideService" для тестов
Ant-ский билд скрипт содержит цели для создания БД, запуска юнит тестов и построения веб репортов их результатов, создания javadocs по проекту, построения веб представления метрики проекта (сколько пакетов, класов и т.д., для етого используется утилита jdepend), а также svn статистики (используется statsvn)

Скачать исходники проекта с библиотеками (14мб)
Скачать исходники без библиотек

Комментариев нет: