Модульное тестирование лука

У меня есть архитектура, основанная на луковой архитектуре. Мне любопытно по поводу модульного тестирования системы. Вот как система течет:

MVC -> Services -> Repositories -> NHibernate -> Database

Это мои мысли о тестировании. Я хотел бы настроить способ тестирования моих репозиториев. Либо с использованием SQLite или SQL Express. Модульные тесты будут проверять весь репозиторий. Таким образом, при наличии UserRepository он будет тестировать все свои методы (Get, Save, Count и т. Д.). Эти тесты должны также проверить мои отображения и сущности.

Далее я хотел бы проверить свои Услуги. Тест использовал Moq для макетирования моих репозиториев. Затем я бы сделал тесты, которые вызывают мои службы. Каждый раз, когда используется репозиторий, он будет использовать реализацию Moq. Любые другие критические фрагменты кода, вероятно, должны быть заблокированы, такие как вызов внешнего веб-сервиса, отправка электронной почты и тому подобное.

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

Учитывая, что моя архитектура настроена для тестирования (с использованием интерфейсного подхода), похоже ли это на стандартный способ модульного тестирования? Кроме того, что можно сказать о тестировании с моим IoC (Ninject)? Любые мысли или советы будут очень признательны.

1 ответ

Решение

Кажется правдоподобным и хорошо. Что касается использования sqlite или sql express, я бы предложил использовать ту же базу данных, что и в вашей live-системе. это часть нашего интеграционного тестирования. У нас были некоторые незначительные глюки, когда nhibernate генерировал несколько странных запросов, которые работали в некоторых версиях SQL Server 2005, но не в SQL Server 2008. Поэтому тестирование ваших репозиториев может состоять из модульного тестирования (и сессии-заглушки) и интеграционных тестов.

Другие вопросы по тегам