Должен ли я использовать базу данных в памяти вместо того, чтобы копировать мои репозитории? - PullRequest
6 голосов
/ 30 января 2010

Мне нравится идея использовать базу данных в памяти, такую ​​как SQLite, при тестировании вместо создания Mocks для моих репозиториев. Таким образом, я также могу протестировать код моих репозиториев без проблем с производительностью.

Каковы плюсы и минусы этой стратегии?

Ответы [ 3 ]

4 голосов
/ 30 января 2010

Если я использую ORM, я обычно склоняюсь к использованию базы данных sqlite в памяти для тестирования своих приложений, поскольку у меня нет накладных расходов на настройку макетов и ожидаемых результатов. Есть увеличение скорости по сравнению с использованием фиктивной базы данных, но я не ожидаю, что она будет быстрее, чем при использовании макета. Если бы я использовал адаптер SQL, я бы, вероятно, использовал макет, поскольку в противном случае мне, вероятно, пришлось бы переписывать вызовы.

3 голосов
/ 30 января 2010

Я бы сказал, что эти две стратегии - две разные вещи. Как вы сами сказали, с помощью in-memory db вы также можете тестировать свои репозитории, однако сначала вы должны протестировать свои репозитории, чтобы достичь разделения интересов. Когда вы проектируете свою систему, возможно, в соответствии с MVC, вы хотите, чтобы ваши контроллеры были перед моделями / репозиториями, потому что сначала вы должны решить, что вы хотите сделать, а после этого решить, какие объекты будут совместно достигать этой цели. Поэтому, возможно, лучше сначала создать контроллеры и макетные репозитории, а затем вы можете протестировать свои репозитории, используя базу данных в памяти, если ее действительно легко настроить.

2 голосов
/ 30 января 2010

Моя стратегия заключается в том, что при тестировании моего бизнес-кода я копирую свой репозиторий. При тестировании моего хранилища я делаю макет своего слоя доступа к данным. Я использую, насколько это возможно, автоматически сгенерированный код для своего уровня доступа к данным (LINQ-to-SQL), поэтому тестировать там особо нечего. То, что есть (валидация, специализированная обработка свойств), обычно может быть проверено напрямую, без насмешек. Если это абсолютно необходимо (или проще), я иногда подделываю слой данных с помощью специального хранилища в памяти, созданного на основе списков - см. Мой блог по адресу http://farm -fresh-code.blogspot.com , где я написал об этом.

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