Много маленьких наборов данных dbunit или один большой? - PullRequest
2 голосов
/ 04 июня 2010

Распределение тестовых данных по нескольким небольшим наборам данных, по-моему, создает головную боль при обслуживании, когда схема настраивается. Кто-нибудь видел проблему с созданием одного большего набора тестовых данных? Под "большим" я все еще говорю только о паре сотнях записей.

1 Ответ

6 голосов
/ 04 июня 2010

Я бы не использовал уникальный большой набор данных (вы хотите избежать дополнительных затрат, если он вам не нужен) и следовал бы рекомендациям DbUnit Best Practices :

Использовать несколько небольших наборов данных

Большинство ваших тестов не требуют вся база данных должна быть повторно инициализирована. Таким образом, вместо того, чтобы положить весь ваш данные базы данных в одном большом наборе данных, попытаться разбить его на множество меньших ломти.

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

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

Еще несколько отзывов от людей из Unitils:

Автоматическое тестирование базы данных

При написании тестов базы данных имейте в виду следующие рекомендации:

  • Используйте небольшие наборы тестовых данных, содержащие как можно меньше данных. В файлах данных указывайте только столбцы, которые используются в столбцах соединения, или предложение where в тестируемом запросе.
  • Сделать наборы данных специфичными для класса тестирования. Не используйте повторно наборы данных между различными тестовыми классами, например, не используйте 1 большой набор данных домена для всех ваших тестовых классов. Это очень затруднит внесение изменений в данные теста для теста, не затормозив что-либо для другого теста. Вы пишете модульный тест, и он должен быть независим от других тестов.
  • Не используйте слишком много наборов данных. Чем больше наборов данных вы используете, тем больше требуется обслуживания. Попробуйте повторно использовать набор данных testclass для всех тестов в этом testclass. Используйте наборы данных метода, только если они делают ваши тесты более понятными и понятными.
  • Ограничить использование ожидаемых наборов данных результатов. Если вы используете их, включите только те таблицы и столбцы, которые важны для теста, а оставьте все остальные.
  • Использовать схему базы данных для каждого разработчика. Это позволяет разработчикам вставлять тестовые данные и запускать тесты, не мешая друг другу.
  • Отключить все ограничения внешнего ключа и ненулевые ограничения в тестовых базах данных. Таким образом, файлы данных должны содержать не больше данных, чем это абсолютно необходимо

Использование небольших наборов данных с достаточным количеством данных работало для нас прилично в прошлом. Конечно, есть некоторая поддержка, если вы настроите базу данных, но это возможно в какой-то организации.

...