В памяти - отличный выбор для ваших тестов , когда данные легко отбираются для ваших заданных тестовых случаев, и тестируется очень конкретная операция. Реальная база данных лучше подходит для интеграционных тестов, где предварительные требования к данным более сложны и есть смысл в том, чтобы базовые данные оставались после завершения тестов.
Для нас единственными вещами, которые мы допускаем в нашем «быстром» наборе тестов JUnit, являются те, которые не имеют каких-либо внешних зависимостей (база данных, файл, сеть и т. Д.), Так что комплект может быть запущен быстро и эффективно как разработчики, так и постоянная интеграция при регистрации. Если существует определенный тест, который обязательно должен быть отправлен в БД, то единственный способ пройти в памяти - это единственный способ.
Имейте в виду пару моментов:
- Подумайте внимательно, если вам нужно использовать
База данных вообще в модульном тесте. Это
может свидетельствовать о плохой конструкции
в том, что уровень доступа к данным
слишком тесно связаны с бизнесом
логика, которую вы пытаетесь проверить и
не может быть издеваться.
- Если вы используете реальную базу данных для интеграционного тестирования, убедитесь, что тесты всегда возвращают данные в первоначальное состояние после завершения. Я видел много потерянного времени и провал интеграционных тестов, потому что какой-то другой тест испортил данные.
Что касается вашего другого вопроса, он действительно зависит от ваших потребностей. Хорошее практическое правило - одна база данных разработки для каждой ветви кода, поскольку могут потребоваться изменения схемы, которые не относятся к другой ветви кода. Важно иметь выделенную базу данных для разработки; Я удивлен тем, сколько групп разработчиков должны совместно использовать базу данных с командой QA и т. Д. Важно иметь возможность вносить изменения в изолированную среду, которая не влияет на другие команды или не позволяет другим выполнять свою работу, поэтому если Вы выполнили те требования, которые у вас хорошо.