Стратегия тестирования БД Oracle - PullRequest
1 голос
/ 21 апреля 2011

На работе мы пытаемся упростить приложение, которое было закодировано с использованием избыточного использования Spring Remoting. Вот как это работает сегодня:

(Контроллеры) Spring MVC -> Spring Remoting -> Hibernate

Все развернуто на одной машине, Spring Remoting не нужна (никогда не понадобится) и усложняет обслуживание кода. Мы хотим этого.

Как убедиться, что все работает после наших изменений? Сегодня у нас 0% покрытия кода! Мы думали о создании интеграционных тестов для наших контроллеров, поэтому при удалении Spring Remoting они должны вести себя точно так же. Мы подумали об использовании сочетания среды Spring Test в сочетании с DBUnit для перевода Oracle в известное состояние каждый цикл тестирования.

Кто-нибудь пробовал подобное решение? Какие недостатки? Вы бы предложили лучшую альтернативу?

Ответы [ 2 ]

2 голосов
/ 21 апреля 2011

Это всегда зависит от соотношения усилия / выгоды, которое вы готовы получить. Вы можете получить почти 100% покрытие кода, если вы действительно прилежны и тщательны. Но это тоже может быть излишним, особенно когда дело доходит до поддержки этих тестов. Но твоя идея хороша. Я делал это пару раз раньше со средними приложениями. Вот что вы должны сделать:

  1. Убедитесь, что в начале каждого теста в наборе тестов у вас есть хорошо известные тестовые данные в базе данных (вы упомянули это сами)
  2. Поскольку вы используете Hibernate, вы также можете попробовать использовать HSQLDB вместо Oracle. Таким образом, ваши тесты будут выполняться намного быстрее.
  3. Создайте множество независимых небольших тестовых случаев, охватывающих большинство ваших самых ценных функций. Вы всегда можете позволить себе иметь незначительные ошибки в некоторых удаленных и неважных уголках приложения.
  4. Убедитесь, что все эти тестовые примеры запускают до рефакторинга.
  5. Убедитесь, что у вас есть справочная система, которая не будет затронута рефакторингом, чтобы иметь возможность добавлять новые тестовые случаи, если вы подумаете о чем-то только позже
  6. Запустите рефакторинг и во время рефакторинга запустите все соответствующие тесты, которые могут быть нарушены текущим шагом рефакторинга. Запускайте полный набор тестов раз в ночь, используя такие инструменты, как jenkins .

Это должно сработать. Если ваше приложение является веб-приложением, то я могу порекомендовать только селен . Он имеет приятную интеграцию с jenkins, и вы можете создавать сотни тестовых примеров, просто щелкая ваше приложение в браузере (эти клики записываются и генерируется тестовый скрипт Java / Groovy / другого языка).

0 голосов
/ 21 апреля 2011

В нашем веб-приложении Spring MVC / Hibernate (с использованием v3.4) мы используем базу данных Oracle для тестирования интеграции.

Чтобы гарантировать, что наша база данных находится в известном состоянии при каждом запуске наборов тестов, мы задаем следующее свойство в файле persistence.xml нашего набора тестов:

<property name="hibernate.hbm2ddl.auto" value="create"/>

Это гарантирует, что схема БД создается при каждом запуске наших тестов на основе аннотаций Hibernate в наших классах. Чтобы заполнить нашу базу данных известным набором данных, мы добавили файл с именем import.sql в наш путь к классам с соответствующими вставками SQL. Если у вас установлено вышеуказанное свойство, Hibernate запустит операторы в import.sql в вашей базе данных после создания схемы.

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