#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 # в действиях браузера. Оно удивительно простое в использовании и настройке.