с использованием Spring, Hibernate и Scala, есть ли лучший способ загрузки тестовых данных, чем dbunit? - PullRequest
2 голосов
/ 01 июня 2010

Вот некоторые вещи, которые мне действительно не нравятся в dbunit:

1) Вы не можете указать точный порядок вставок, потому что dbunit любит группировать ваши вставки по имени таблицы, а не по порядку, который вы определяете в файле XML. Это проблема, когда у вас есть записи, зависящие от других записей в других таблицах, поэтому вы должны отключить ограничения внешнего ключа во время ваших тестов ... что на самом деле отстой, потому что эти ограничения внешнего ключа будут запущены в производстве, а ваши тесты - нет. знать о них!

2) Они кажутся одержимыми, заставляя вас использовать пространство имен xml для определения вашего xml ... и я, честно говоря, не могу возиться с этим. Мне нравится data.xml без какого-либо пространства имен. Оно работает. Но они так одержимы, осуждая это.

3) Создание разных XML-файлов сложно для каждого теста, поэтому на самом деле поощряет создание данных для всего вашего приложения. К сожалению, этот процесс тоже немного раздут, когда данные увеличиваются в размерах и вещи запутываются. Должен быть лучший способ разбить ваши тестовые данные на куски без необходимости копировать / вставлять большую часть тестовых данных во все ваши тесты.

4) Отслеживание ссылок на идентификаторы в большом XML-файле просто невозможно. Если у вас 130 классов доменов, это просто сбивает с толку. Эта модель просто не масштабируется.

Есть ли что-то менее раздутое и лучшее в пространстве Spring / Hibernate? Единица БД исчерпала себя, и я действительно ищу что-то лучшее.

1 Ответ

0 голосов
/ 23 марта 2011

For 1) Посмотрите, можете ли вы определить свои ограничения как отложенные (Oracle docs) , проверка будет отложена до принятия транзакции.

Для других рассмотрите возможность использования подхода Factory, т. Е. Использования класса Factory, который знает, как создавать объекты и вставлять их в БД для целей тестирования. Это может привести к потере некоторых целей тестирования, поскольку для работы теста вы полагаетесь на свой код вставки / обновления.

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

...