Тестирование веб-узлов и веб-служб в командной среде
Обновлен: Ноябрь 2007
В первый раз веб-узлы тестируются, как правило, на компьютере разработчика. Однако иногда возникает необходимость использовать тесты совместно с другими участниками команды. В более формальной среде при работе над проектом может потребоваться возвратить рабочий код и тесты в систему управления версиями и использовать эти тесты в лаборатории построения для тестирования кода. В любом из этих сценариев модульные тесты должны иметь возможность определить тестируемый веб-узел вне зависимости от его расположения — на локальном компьютере или удаленном ресурсе. Чтобы предоставить обработчику тестов возможность определения веб-узла, используется переменная %PathToWebRoot%, как описано в следующих подразделах данного раздела.
Выбор сервера
Разрабатываемый веб-узел или веб-службу можно запустить на сервере разработки ASP.NET или на веб-сервере, например сервере IIS. От выбора сервера зависит способ тестирования веб-узла или веб-службы, как описано в следующих подразделах:
Тестирование веб-служб с помощью сервера разработки ASP.NET
Тестирование веб-узлов с помощью сервера разработки ASP.NET
Связанные вопросы тестирования: дополнительные сведения
Модульные тесты можно использовать для тестирования веб-методов веб-служб, как описано в разделе Тестирование веб-служб, а также для тестирования бизнес-логики веб-узла, как описано в разделе Общие сведения о модульных тестах ASP.NET. Кроме того, веб-тесты можно использовать для тестирования веб-страниц, как описано в разделе Работа с веб-тестами.
Тестирование веб-служб с помощью сервера разработки ASP.NET
Для тестирования веб-служб с помощью сервера разработки ASP.NET в локальной файловой системе следует пометить метод модульного теста атрибутом AspNetDevelopmentServer. Чтобы определить расположение веб-узла, в параметре атрибута AspNetDevelopmentServer указывается путь к корневому каталогу узла. Для этого используется переменная %PathToWebRoot%, как описывается в подразделе Установка переменной pathToWebRoot. Дополнительные сведения см. в разделе Тестирование веб-служб.
Дополнительные сведения об использовании атрибута AspNetDevelopmentServer и его синтаксисе см. в разделах AspNetDevelopmentServerAttribute и Тестирование веб-служб.
Тестирование веб-узлов с помощью сервера разработки ASP.NET
При создании модульного теста ASP.NET, предназначенного для тестирования веб-узла в файловой системе компьютера, тест помечается атрибутом AspNetDevelopmentServerHost. Для этого атрибута требуется параметр pathToWebApp. По умолчанию созданный модульный тест ASP.NET содержит в параметре pathToWebApp переменную %PathToWebRoot%. Значение этой переменной устанавливается в соответствии с процедурой, описанной в подразделе Установка переменной pathToWebRoot. Дополнительные сведения о тестировании веб-узлов с помощью сервера разработки ASP.NET см. в разделе Общие сведения о модульных тестах ASP.NET.
Дополнительные сведения об использовании атрибута AspNetDevelopmentServerHost и его синтаксисе см. в разделах AspNetDevelopmentServerHostAttribute и Общие сведения о модульных тестах ASP.NET.
Установка переменной pathToWebRoot
В каждом модульном тесте, который предполагается использовать для тестирования веб-узла или веб-службы, запущенной на сервере разработки ASP.NET, необходимо указать строку %pathtowebroot%\\<имя_веб-узла> в параметре pathToWebApp атрибута AspNetDevelopmentServer или AspNetDevelopmentServerHost. Этот параметр задается следующим образом.
Используйте строку %PathToWebRoot% буквально. Используйте ее, даже если тесты в настоящий момент выполняются только компьютере разработчика. Это позволит обеспечить достаточную гибкость для совместного использования тестов с другими разработчиками и их выполнения в среде Team Foundation Build.
Примечание. При тестировании на одном локальном компьютере нескольких веб-узлов, которые не располагаются в общем корневом каталоге, может потребоваться жестко закодировать путь к каждому веб-узлу вместо использования переменной %PathToWebRoot%. Важно. Жестко кодировать пути следует только при локальном тестировании, поскольку при жестком кодировании невозможно совместное использование тестов для данного веб-узла в более широкой среде. Прежде чем начать тестирование веб-узла совместно с другими участниками команды или в среде Team Foundation Build, обязательно измените путь, чтобы он включал переменную %PathToWebRoot%.
<имя_веб-узла> — это имя тестируемого веб-узла. Это значение должно в точности совпадать с именем веб-узла, отображаемым в обозревателе решений.
Пример использования параметра pathToWebApp см. в подразделе Пример метода теста.
Задание значения переменной %PathToWebRoot%
Способ получения переменной %PathToWebRoot% своего значения зависит от среды, в которой она используется. Ниже перечислены два возможных случая.
Установка %PathToWebRoot% в среде Team Foundation Build
Установка %PathToWebRoot% в других средах совместной работы
Установка %PathToWebRoot% в среде Team Foundation Build
При использовании переменной %PathToWebRoot% в среде Team Foundation Build ее значение определяется на основе сведений, содержащихся в типе построения, и устанавливается средой Team Foundation Build автоматически.
Например, если тесты выполняются для версии "Release" узла "WebSite1", построенного для платформы x86, для переменной PathToWeb устанавливается следующее значение:
<build directory>/binaries/x86/Release/_precompiled/WebSite1
Установка %PathToWebRoot% в других средах совместной работы
Если переменная %PathToWebRoot% используется в любой среде, отличной от Team Foundation Build, значение этой переменной устанавливается следующим образом. При выполнении теста система выполняет поиск значения переменной %PathToWebRoot% в одном или нескольких местах, перечисленных ниже.
Расположение, используемое по умолчанию для новых проектов веб-узлов. По умолчанию система использует путь к каталогу, в котором средой Visual Studio создаются новые проекты веб-узлов. Значением по умолчанию является следующий каталог: <drive>:\Documents and Settings\<user name>\My Documents\Visual Studio 2005\WebSites\.
Переменная среды PathToWebRoot. Если данная переменная среды определена на компьютере тестирования, то используется это значение, и оно переопределяет любое значение из каталога по умолчанию для новых проектов веб-узлов.
Значение корневого каталога веб-приложения. Чтобы установить это значение, выберите в меню Сервис пункт Параметры, разверните узел Инструменты тестирования и щелкните Выполнение теста. Если это значение установлено, оно переопределяет любые значения переменной среды PathToWebRoot и каталога по умолчанию для новых проектов веб-узлов.
Пример метода теста
Показанный ниже метод теста, предназначенный для тестирования веб-службы, помечен атрибутом AspNetDevelopmentServer. Для атрибута AspNetDevelopmentServer требуется параметр pathToWebApp. Использование переменной %PathToWebRoot% в параметре pathToWebApp выделено в примере полужирным шрифтом.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting.Web;
using TestProject1.localhost;
[TestMethod]
[AspNetDevelopmentServer("HelloWorldServer", "%PathToWebRoot%\\WebSite1")]
public void HelloWorldTest()
{
HelloWorldService target = new HelloWorldService();
WebServiceHelper.TryUrlRedirection(
target,
TestContext,
"HelloWorldServer"
);
string expected = "Hello World";
string actual;
actual = target.HelloWorld();
Assert.AreEqual(
expected,
actual,
"TestProject1.localhost.HelloWorldService.HelloWorld did not return the expected value."
);
}
См. также
Задачи
Практическое руководство. Создание модульного теста
Практическое руководство. Параметризация веб-сервера
Основные понятия
Веб-серверы в Visual Web Developer
Общие сведения о модульных тестах ASP.NET
Ссылки
Microsoft.VisualStudio.TestTools.UnitTesting.Web
AspNetDevelopmentServerAttribute
AspNetDevelopmentServerHostAttribute