Модульные тесты для веб-служб ASP.NET
Между модульными тестами для классов и для веб-служб ASP.NET существуют некоторые различия. Важнее всего, что проект должен содержать ASPX-файл. Данный раздел объясняет, как это сделать, а также описывает, что происходит в тестовом проекте при создании модульного теста для веб-службы ASP.NET.
Дополнительные сведения о порядке запуска тестов производительности веб-сайтов см. в разделе Практическое руководство. Создание и изменение веб-тестов производительности. Дополнительные сведения о модульных тестах для классов см. в разделе Практическое руководство. Создание и выполнение модульного теста.
Обязательные условия
Убедитесь, что установлены следующие компоненты IIS.
Совместимость метабазы IIS 6 и совместимость конфигурации IIS 6
Проверка наличия в проекте ASPX-файла
Для запуска модульного теста в проекте должен иметься ASPX-файл, содержащий нужную веб-службу ASP.NET. Без ASPX-файла можно создавать модульные тесты, но если попытаться их выполнить, вы получите ошибку с сообщением об успешном завершении веб-запроса. Однако на самом деле тест не будет выполнен.
Добавление ASPX-файла
В Обозревателе решений щелкните правой кнопкой мыши проект, содержащий веб-службу ASP.NET, последовательно выберите Добавить, Новый элемент.
В диалоговом окне Добавление нового элемента в разделе Установленные шаблоны выберите Веб.
В списке веб-шаблонов выберите Форма Web Form и щелкните Добавить.
Три новых файла будут добавлены в проект: WebForm1.aspx, WebForm1.aspx.cs и WebForm1.aspx.designer.cs. Эти файлы не требуется изменять или использовать.
Что происходит при создании модульного теста для веб-службы ASP.NET
На следующем рисунке показан метод теста, создаваемый для простого проекта веб-службы ASP.NET. Сведения о более общих изменениях, которые происходят при создании модульного теста, см. в разделе Составляющие модульного теста.
Метод модульного теста ASP.NET
Все модульные тесты создаются с атрибутом [TestMethod ()].
Атрибут [Host Type ()] задает адаптер, в котором будет выполняться модульный тест. Этот атрибут не нужно изменять.
Атрибут [AspNetDevelopmentServerHost()] задает настройки, используемые, когда хост-сервером теста является ASP.NET Development Server. Этот атрибут включается только в случае, если веб-служба ASP.NET выполняется в файловой системе, а не в процессе IIS. Этот атрибут не нужно изменять.
Атрибут [UrlToTest()] задает URL-адрес веб-службы ASP.NET модульного теста.
Остальное представляет собой тело метода теста. Возможно, вам понадобится инициализировать переменные и изменить утверждения в методе теста.
Примечание
Дополнительные сведения об описанных здесь атрибутах см. в разделе
При работе в Windows Vista следует запускать Visual Studio от имени администратора
При работе с Windows Vista для выполнения модульных тестов ASP.NET необходимо запустить Visual Studio от имени администратора. При запуске Visual Studio от имени обычного пользователя можно создавать веб-узлы, создавать и выполнять тесты, однако они завершатся ошибкой. Чтобы запустить Visual Studio от имени администратора, щелкните правой кнопкой мыши пункт Microsoft Visual Studio 2010 в меню Пуск и выберите команду Запуск от имени администратора.
При запуске IIS от имени нестандартного пользователя убедитесь, что включены все необходимые разрешения
При создании веб-службы ASP.NET вы выбираете расположение — Файловая система, HTTP или FTP. Если выбрать расположение "Файловая система", то будет использован процесс ASP.NET Development Server. При выборе HTTP или FTP используется процесс IIS.
Если веб-служба ASP.NET запускается в процессе IIS, можно выбрать выполнение модульного теста от имени нестандартного пользователя, в целях безопасности. Нестандартный пользователь — это другое удостоверение процесса.
Например, если веб-службе ASP.NET требуется доступ к ресурсам на компьютере, таким как папки, файлы и базы данных, можно запустить ее таким образом, чтобы обеспечить только необходимый уровень прав доступа к этим ресурсам.
Если веб-служба требует разрешения, отсутствующего у нестандартного пользователя. модульный тест может завершиться ошибкой. Например, процесс ASP.NET, работающий от имени нестандартного пользователя, может иметь ограниченный набор прав доступа, но все равно будет пытаться создавать временные файлы в папке %WINDIR%\Temp. Это приведет к сбою, если разрешения, установленные для папки %WINDIR%\Temp, не обеспечивают процессу достаточный уровень доступа для создания этих файлов. Для успешного модульного тестирования нужно будет предоставить процессу более высокий уровень доступа к папке %WINDIR%\Temp.
См. также
Ссылки
Microsoft.VisualStudio.TestTools.UnitTesting
Основные понятия
Практическое руководство. Создание и выполнение модульного теста