В каких случаях вы тестируете базу данных In-Memory вместо базы данных разработки? - PullRequest
5 голосов
/ 24 сентября 2008

Когда вы проверяете базу данных в памяти против базы данных разработки?

Кроме того, в качестве связанного дополнительного вопроса, когда вы используете Базу данных для разработки, используете ли вы Индивидуальную базу данных для разработки, Интеграционную базу данных для разработки или и то, и другое?

Также ++, для модульного тестирования, когда вы используете базу данных в оперативной памяти для макетирования вашего репозитория / DAL и т. Д .?

Ответы [ 2 ]

7 голосов
/ 24 сентября 2008

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

Для нас единственными вещами, которые мы допускаем в нашем «быстром» наборе тестов JUnit, являются те, которые не имеют каких-либо внешних зависимостей (база данных, файл, сеть и т. Д.), Так что комплект может быть запущен быстро и эффективно как разработчики, так и постоянная интеграция при регистрации. Если существует определенный тест, который обязательно должен быть отправлен в БД, то единственный способ пройти в памяти - это единственный способ.

Имейте в виду пару моментов:

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

Что касается вашего другого вопроса, он действительно зависит от ваших потребностей. Хорошее практическое правило - одна база данных разработки для каждой ветви кода, поскольку могут потребоваться изменения схемы, которые не относятся к другой ветви кода. Важно иметь выделенную базу данных для разработки; Я удивлен тем, сколько групп разработчиков должны совместно использовать базу данных с командой QA и т. Д. Важно иметь возможность вносить изменения в изолированную среду, которая не влияет на другие команды или не позволяет другим выполнять свою работу, поэтому если Вы выполнили те требования, которые у вас хорошо.

2 голосов
/ 24 сентября 2008

Для моей команды это оперативная память на машине разработчика и реальная база данных на сервере непрерывной интеграции.

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