Тестирование интеграции ASP.NET Приложение MVC

#asp.net-mvc #unit-testing #testing #integration-testing

#asp.net-mvc #модульное тестирование #тестирование #интеграция-тестирование

Вопрос:

Мне нужен совет об эффективном способе написания интеграционных тестов для нашего текущего ASP.NET Приложение MVC. Наша архитектура состоит из:

  • Уровень обслуживания ниже контроллеров
  • Уровень обслуживания использует репозитории и очередь сообщений (иногда) для отправки сообщений внешним приложениям.

Что, я думаю, следует сделать, так это:

  • Напишите поведенческие модульные тесты для всех частей изолированно. Итак, например, мы должны модульно протестировать уровень сервиса, имитируя репозитории и очереди сообщений.

  • То же самое касается контроллеров. Итак, мы имитируем уровень сервиса и модульно тестируем контроллер.

  • Наконец, мы пишем отдельные тесты интеграции для репозиториев с реальной базой данных и для классов очереди сообщений с реальными очередями сообщений, чтобы гарантировать, что они успешно сохраняются / извлекают данные.

Мои вопросы:

  • Существуют ли какие-либо другие типы интеграционных тестов, которые нам нужно написать?

  • Нужно ли нам все еще писать интеграционные тесты для сервисов с реальными репозиториями и очередями сообщений?

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

Любой совет был бы высоко оценен.

Приветствия

Ответ №1:

Здесь, в office, мы не тестируем на реальных сервисах.

  • У нас есть тест на стороне сервиса
  • Мы тестируем контроллеры как модульные тесты, в этих модульных тестах мы используем mock
  • Пока у нас нет интеграционного теста:-(

Нам посоветовали не использовать реальные сервисы для тестирования, мы используем Rhino Mocks для имитации ответов на методы, вызываемые внутри действий контроллера.

Таким образом, проблема по-прежнему заключается в том, как правильно выполнять интеграционные тесты.

Возможно, это могло бы помочь вам:

http://www.codeproject.com/Articles/98373/Integration-testing-an-ASP-NET-MVC-application-wit.aspx

но я все еще ищу лучшее представление о его возможностях.

Ответ №2:

Я использую Ivonna для тестирования различных уровней изоляции. Я могу проверить, что конкретный URL с некоторыми конкретными данными POST попадает в ожидаемый метод действия с ожидаемыми аргументами, и в то же время я могу заглушать / имитировать внешние службы.

Комментарии:

1. Ссылка больше не работает : (

2. Этот проект был заброшен.

Ответ №3:

Я использовал SpecsFor.MVC для тестирования интеграции. По сути, вы пишете код в тестовом классе, а фреймворк запускает браузер, интерпретирующий ваш C # в действиях браузера. Оно удивительно простое в использовании и настройке.