Интеграционные тесты подробно - PullRequest
3 голосов
/ 22 марта 2011

У меня есть служба WCF, которая обращается к базе данных и добавляет к ней данные.Теперь я хочу провести некоторые интеграционные и / или системные тесты (автоматизированные).

Как мне это сделать?

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

Есть ли какая-либо стратегия, которую вы бы порекомендовали?

Я использую WCF, Entity Framework, SQL Server, MSTests.

1 Ответ

1 голос
/ 22 марта 2011

Если вы не возражаете против того, чтобы ваш тестовый проект зависел от Entity Framework, то вот как я бы подошел к этому.

  1. В тестовом проекте создайте модель EF из базы данных, используя толькотаблиц, которые вы собираетесь тестировать.
  2. Добавьте ссылку на службу к службе WCF из тестового проекта.
  3. Создайте тест в тестовом проекте.В этом тесте используйте контекст EF для создания ваших начальных тестовых данных.
  4. Позвоните в сервис из теста.
  5. Проверьте базу данных на наличие соответствующих данных, позвоните в свой Assert (s).
  6. Очистите базу данных.

Вам также следует рассмотреть возможность использования облегченной базы данных на основе файлов / в памяти, такой как SQLite, для этой задачи.Одним из простых способов достижения этого было бы использование EF для генерации модели из вашей БД, а затем использование инструмента «Обновление базы данных из модели» для генерации SQL, который создаст соответствующие таблицы и ограничения в вашем экземпляре SQLite.Это означает отсутствие риска слияния данных в вашей основной / dev DB и, возможно, более быстрые тесты.

Также в отношении шагов 3 и 6, некоторые люди рекомендуют использовать встроенные средства настройки / очистки / разрываМСТест.Обычно я не начинаю их использовать, пока не вижу, что они помогают уменьшить дублирование кода, потому что, по моему мнению, они делают тесты менее четкими и читабельными, но это личное дело.

...