Я только что столкнулся с ошибкой в моем приложении, которая, вероятно, могла быть обнаружена при некоторых интеграционных тестах, поэтому я думаю, что давно пора написать несколько!
Мой вопрос касается настройки этих тестов и того, на каком уровне кода вы выполняете тесты.
Настройка
Учитывая, что у меня должно быть много интеграционных тестов, я не хочу создавать и удалять тестовую базу данных для каждого теста, это будет невероятно медленно (даже если это SqlLite в памяти). Мои мысли:
- Иметь тестовую базу данных, которая находится рядом с моим разработчиком базы данных.
- Перед тестированием запустите скрипт сброса, который правильно настроит мою схему и вставит все необходимые данные (не специфичные для тестового примера)
- Просто используйте этот тестовый БД, как будто это настоящий БД.
Однако, кажется очень расточительным, что я должен запускать свою конфигурацию Fluent NHib в каждой [Setup]. Это просто сложно? Какие у меня есть варианты?
Мой сеанс в настоящее время упакован в шаблон UoW, при этом создание и уничтожение выполняются для begin_request и end_request (веб-приложение MVC) соответственно. Должен ли я изменить это, чтобы играть с тестами, чтобы решить эту проблему?
Тестирование
Что касается написания тестов, как мне это сделать?
Должен ли я выполнять тестирование с максимально возможного уровня (действия контроллера MVC) или с самого низкого (репозитории).
Если я проверю на самом низком уровне, мне придется вручную жестко закодировать все данные. Это сделает мой тест ломким к изменениям в коде, а также не будет отражать то, что действительно произойдет в коде во время выполнения. Если я тестирую на самом высоком уровне, мне нужно запустить все мои настройки IoCC, чтобы зависимости вводились и все функционировало (опять же, повторяя это в каждом [SetUp]?)
Мех! Я заблудился, кто-то указывает мне правильное направление!
Спасибо