В моем проекте модульного тестирования есть следующий метод:
[TestMethod]
[HostType("ASP.NET")]
[UrlToTest("http://localhost:3418/Web/SysCoord/ChooseEPA.aspx")]
[AspNetDevelopmentServerHost("%PathToWebRoot%")]
public void TestMethod1()
{
Page page = TestContext.RequestedPage;
Assert.IsTrue(false, "Test ran, at least.");
}
Я получаю это исключение:
Тестовый адаптер WebHostAdapter выдал исключение при выполнении теста TestMethod1. Веб-сайт не может быть правильно настроен; не удалось получить информацию о процессе ASP.NET. Запрос «http: // локальный: 3418 / SysCoord / VSEnterpriseHelper.axd» возвратил ошибку: удаленный сервер возвратил ошибку: (404) не найден. Удаленный сервер возвратил ошибку: (404) Не найдено.
Страница работает как надо в браузере по адресу: http: // локальный: 3418 / Интернет / SysCoord / ChooseEPA.aspx.
Этот физический путь: C: \ ESI \ HR_Connect2 \ BenefitChangeSystem \ Application_DEV \ Web \ SysCoord.
Любые идеи были бы хорошы.
Обновление 1
Для этой статьи в мой файл web.config добавлено следующее. Также сделал web.config доступным для записи и убил / перезапустил веб-сервер разработки. Никаких изменений в поведении.
<location path = "VSEnterpriseHelper.axd">
<system.web>
<authorization>
<allow users = "*"/>
</authorization>
</system.web>
</location>
Обновление 2
Изменение атрибута AspNetDevelopmentServerHost на эквивалент [AspNetDevelopmentServerHost ("% PathToWebRoot% \ solutionfolder \ webfolder", "/ webfolder")] разрешило проблему 404.
К сожалению, вместо этого тест стал возвращать ошибку 500. Прогресс, но не очень. Метод проб и ошибок с чистым проектом привел к выводу, что причиной проблемы были ссылки на пользовательские классы в файле web.config.
Например:
<profile enabled = "true" defaultProvider = "MyProfileProvider">
<providers>
<add name = "MyProfileProvider" connectionStringName = "ProfileConnectionString" applicationName = "/MyApp" type = "System.Web.Profile.SqlProfileProvider"/>
</providers>
<properties>
<add name = "Theme" type = "String" defaultValue = "Default"/>
<add name = "LastLogon" type = "DateTime"/>
<add name = "LastLogonIp" type = "String"/>
<!--
<add name = "EmployeeSearchCriteria" type = "MyApplicationFramework.Profile.EmployeeSearchCriteria"/>
<add name = "DocumentSearchCriteria" type = "MyApplicationFramework.Profile.DocumentSearchCriteria"/>
-->
</properties>
</profile>
С закомментированными типами критериев тест прошел нормально. Если они не прокомментированы, была возвращена ошибка 500.
У кого-нибудь была подобная проблема в прошлом?





Основываясь на ваших доказательствах, я бы предположил, что ссылка на любую сборку, содержащую MyApplicationFramework.Profile.EmployeeSearchCriteria, отсутствует либо в проекте модульного тестирования, либо в веб-проекте - хотя я действительно думаю, что вам потребуется только ссылка в веб-проекте, но я не осведомлен о том, как ведет себя веб-сервер VS при использовании в рамках модульного теста.
Я столкнулся с такой же проблемой с модульным тестированием. И нашли причину проблемы и тоже решили ее. Проблема только в правах доступа к каталогу.
В моем случае я установил VSTS на другой диск (d), а затем по умолчанию. Так что только для того, чтобы дать пользователю ИМЯ ПК \ ASPNET полные права доступа для всего каталога \ Program Files \ Microsoft Visual Studio 9.0.
Я использую Windows XP, но если вы используете оконный сервер, предоставьте права доступа пользователю NetworkServices.
Этим решением я решил свою проблему. Надеюсь, вы найдете что-то полезное из этого ответа.
Спасибо, Приеш Патель
У меня была та же проблема, что и у вас, однако мой опыт был немного другим.
Я использую Vista x64, мои разработчики используют xp x64 ... у них вообще не было никаких проблем. Я только что обновился и не смог запустить ни один модульный тест для проекта asp.net MVC. Я получал ту же ошибку 500, что и вы.
Я отключил покрытие кода, все волшебным образом заработало.
Закомментируйте весь файл web.config следующим образом
<!-- <location path = "VSEnterpriseHelper.axd">
<system.web>
<authorization>
<allow users = "?" />
</authorization>
</system.web> </location> -->
Это сработало для меня
Убедитесь, что ваше веб-приложение ориентировано на Framework 4.0. Если вы пытаетесь протестировать 2.0, 3.0 или 3.5, вы получите (500) Internal Server Error.
Я обнаружил, что с помощью vs2010 я не ограничен только приложениями 4.0. Однако я ДЕЙСТВИТЕЛЬНО обнаружил, что при тестировании веб-приложения и использовании перенаправления старой версии System.Web.Extensions вы можете получить ошибку. Удаление следующего раздела из файла Web.config устранило мою проблему:
<runtime>
<assemblyBinding xmlns = "urn:schemas-microsoft-com:asm.v1" appliesTo = "v2.0.50727">
<dependentAssembly>
<assemblyIdentity name = "System.Web.Extensions" publicKeyToken = "31bf3856ad364e35"/>
<bindingRedirect oldVersion = "1.0.0.0-1.1.0.0" newVersion = "3.5.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name = "System.Web.Extensions.Design" publicKeyToken = "31bf3856ad364e35"/>
<bindingRedirect oldVersion = "1.0.0.0-1.1.0.0" newVersion = "3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
Удачи.
Я столкнулся с аналогичной проблемой при тестировании веб-сервиса, в котором используется проект .NET 3.51. Я получал ошибку IIS 500. Я удалил старые привязки сборки, как прокомментировал Хэл Диггс, и это сработало.
У меня была эта проблема раньше, и в тот момент я сдался, прочитав все, что я мог найти в Google (включая эту тему).
В моем случае решение оказалось простым. Все, что мне нужно было сделать, это не использовать тестовые атрибуты ASP.NET и просто протестировать проект MVC как DLL.
Удалите лишние атрибуты из теста.
[TestMethod]
public void TestMethod1()
{
Page page = TestContext.RequestedPage;
Assert.IsTrue(false, "Test ran, at least.");
}
В разделе «Охват кода» снимите флажок «Проект MVC» и вручную добавьте DLL проекта MVC.

Вуаля, он инструментирован как обычная сборка, без ошибок, не запускает сервер разработки, а также не дает сбоев в сборке команды.
Resharper не вызывал этих проблем. Он запустит для вас сеанс с NUnit и позаботится обо всем. Это действительно должно быть в VS.
Я получил такое же сообщение об ошибке при модульном тестировании веб-приложения с помощью Visual Studio 2010. Единственная разница в том, что я использовал IIS, то есть я пропустил директиву [AspNetDevelopmentServerHost("%PathToWebRoot%")].
Я подозреваю, что проблема заключается в том, что я использовал IIS версии 5.1. Подробнее здесь:
http://ibsta.blogspot.com/2011/01/unit-testing-fun-under-visual-studio.html
Я установил модульный тест по умолчанию, который выскочил с ошибкой, которая привела меня сюда. Я только что удалил следующее (ниже). Затем щелкнул отладить текущий контекст и стрелку, хорошо: S.
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("C:\\Inetpub\\....]
У меня была такая же проблема. Затем я проверил свойства как веб-проекта, так и проекта модульного тестирования. И обнаружил, что целевые рамки были установлены по-разному. Я установил целевую структуру обоих проектов на .Net framework 4 (в моем случае). Наконец, снова запустил тестовый метод, и он сработал.
Спасибо.
Для меня проблема была вызвана Resharper. Как только я приостановил его (Инструменты -> Параметры -> Resharper -> Общие -> Приостановить), все заработало. (с использованием VS2010SP1 и Resharper Ultimate 2016.1.2)
Это исправило мои проблемы после того, как обновление с VS2008 до VS2010 нарушило мои тесты, спасибо.