2009-06-01 6 views
3

У нас есть проект веб-приложений (на самом деле есть десятки ...), к которому прилагается проект тестирования. В тестовом проекте у меня есть простой единичный тест, который выполняет несколько методов.Каковы наилучшие методы для атрибута AspNetDevelopmentServerHost?

Выполняется локально, выполняется единичный тест и работает.

Однако, когда наш сервер сборки TFS пытается выполнить тест, он выходит из строя с ошибкой в ​​отношении недопустимого пути для атрибута AspNetDevelopmentServerHost. Другие члены команды могут выполнить это просто отлично.

Проблема в том, что корень моей рабочей области TFS установлен в c: \ projects \ У одного из членов команды есть c: \ tfs2008 \ Сервер сборки TFS, с другой стороны, устанавливает переменную pathToWebRoot для " c: \ blahblah \ Release_PublishedWebsites ... "Это приводит к неправильному пути.

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

Итак, каковы наилучшие практики в отношении веб-проектов для модульного тестирования в командной среде? MSDN site article был в истинном стиле microsoft менее полезным.

ответ

3

вы должны указать строку %pathtowebroot%\\WebSiteName в параметре, pathToWebApp атрибута AspNetDevelopmentServer или AspNetDevelopmentServerHost.

+0

достаточно близко. Я просто хочу, чтобы мы могли установить его во время выполнения. – NotMe

1

Можно установить переменные среды во время сборки, чтобы изменить путь и по-прежнему работать в локальной среде.

+0

После долгих исследований реальная проблема заключается в том, что PathToWebRoot неправильно установлен в TFS Build для веб-проектов. Веб-сайты работают очень хорошо, но он не устанавливает его корректно для веб-проектов, у которых есть другой путь вывода. Кстати, я отказался от этого в надежде на то, что в 2010 году проблема решена. – NotMe

3

Мы используем:

<TestMethod(), _ 
HostType("ASP.NET"), _ 
AspNetDevelopmentServerHost("$(SolutionDir)\\MyWebProject", "/"), _ 
UrlToTest("http://localhost:44444/")> 
Public Sub Test() 
    AssertStuff(); 
End Sub 

$(SolutionDir) означает, что он прекрасно работает в среде всех, и все тесты могут быть проверены Мы должны. меняйте его каждый раз, когда мы автоматически создаем новый тест, но мы все равно пишем тест, так что это не слишком сложно.

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