Простой и надежный в базе данных памяти для быстрых тестов интеграции Java с поддержкой JPA

StackOverflow https://stackoverflow.com/questions/3444265

Вопрос

Мои тесты интеграции будут работать намного быстрее, если я использовал базу данных в памяти вместо PostgreSQL. Я использую JPA (Hibernate), и мне нужна база данных в памяти, которая была бы легко переключаться на использование JPA, легко настроить и надежную. Он должен поддерживать JPA и Hibernate (или налично, если вы будете) достаточно широко, так как у меня нет желания принять свой код доступа к данным для тестов.

Какая база данных является лучшим выбором, заданным требованиям выше?

Это было полезно?

Решение

Для Тестирование интеграции, Теперь я использую H2. (От оригинального автора hsqldb) что я предпочитаю через HSQLDB. это Быстрее (и я хочу, чтобы мои тесты были как можно быстрее), у него есть хорошие функции, такие как совместимость Режим, команда DEV очень отзывчива (в то время как HSQLDB оставался бездействующим в течение нескольких лет до совпадения).

Другие советы

Я использовал HSQLDB. в памяти Для интеграции тестирования настойчивости JPA / Hibernate в Java. Запускается довольно быстро, не требует какой-либо специальной настройки.

Единственную проблему, которую я видел до сих пор с использованием HSQLDB с Hibernate, должен был сделать с размером партии, нуждающийся в 0, но это, возможно, просто было связано с старой версией. У меня будет копать и посмотреть, смогу ли я найти подробную информацию о этой проблеме.

Дерби поддерживает режим в памяти В наши дни это больше не отмечается экспериментальной.

Я использую Дерби. Для одной вещи это около 3 строк кода на единицу теста, поскольку нет необходимости в отключении после теста. Тем не менее, вам необходимо использовать реализацию JPA, которая может упасть и создавать таблицы, такие как ECLIPSELINK.

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

Для тестирования подразделения я предпочитаю создавать свои объекты в своем логике теста в мою единицу @before, я считаю его проще, особенно с JPA, так как он позволяет мне гибко выполнять рефакторинги и не нужно беспокоиться о базовой структуре базы данных, другие инструменты, такие как DBUNIT На основании практически статической структуры и рефакторинга подразумевает изменение XMLS DBUNIT вручную, а не полагаться на возможности рефакторинга Eclipse.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top