2015-05-04 2 views
0

Для всех, кто не торопился, чтобы прочитать мой вопрос, хочу отметить, что я пишу интеграционные тесты NOT Unit-tests.Как написать тесты интеграции ASP.NET API

Используя определение интеграционного тестирования, предоставляемых сайтов (которые находятся в нижней части вопроса):

Интеграционные тесты не использовать фиктивные объекты для замены реализаций для зависимостей службы. Вместо этого интеграционные тесты основываются на сервисах и компонентах приложения. Целью интеграционных тестов является использование функциональных возможностей приложения в его обычной среде исполнения.

Мой вопрос в том, что является лучшей практикой при написании теста интеграции для веб-API ASP.net. На данный момент я использую подход к размещению в памяти, предоставленный Филиппом. W. сообщение в блоге.

Мой второй вопрос: как вы гарантируете, что ваши тестовые данные есть и являются правильными, когда вы не являетесь Mocking (msdn и другие сайты четко говорят, что интеграционный тест не издевается над базами данных). Интернет наполнен примерами того, как писать очень простые тесты интеграции, но имеет нулевые примеры для более сложных API (все, что идет дальше, чем возвращение 1)

Справочные сайты: https://msdn.microsoft.com/en-us/library/ff647876.aspx
https://msdn.microsoft.com/en-us/library/vstudio/hh323698(v=vs.100).aspx http://www.codeproject.com/Articles/44276/Unit-Testing-and-Integration-Testing-in-Business-A http://blog.stevensanderson.com/2009/06/11/integration-testing-your-aspnet-mvc-application/

Filip. W. In-Memory-Хостинг: http://www.strathweb.com/2012/06/asp-net-web-api-integration-testing-with-in-memory-hosting/

ответ

1

Вы видели мой ответ за at this other SO question here. Я опишу это с дополнительной информацией ниже.

В нашем выпуске (с использованием диспетчера выпуска Visual Studio 2013) мы предоставляем ночную базу данных интеграции из известного тестового сценария, создавая базу данных с нуля (все сценарии) - сначала мы клонировали производство, но по мере роста данных это было слишком как часть ночной интеграции. После предоставления db мы делаем то же самое с веб-серверами интеграции VM и развертываем последнюю сборку в этой среде. После этого мы снова запускаем наши модульные тесты из командной строки как часть конвейера релиза, включая тесты, декорированные специальным фильтром действий, который я описал в связанном ответе.

+0

Спасибо. Ваш ответ дал мне несколько советов о том, как это сделать, но я не буду отмечать это как ответ, так как я хотел бы услышать больше мнений по этой теме. – Stralos

Смежные вопросы