500 Ошибка при запуске модульного теста Visual Studio ASP.NET

В моем проекте модульного тестирования есть следующий метод:

    [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.

У кого-нибудь была подобная проблема в прошлом?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
16
0
17 628
12

Ответы 12

Основываясь на ваших доказательствах, я бы предположил, что ссылка на любую сборку, содержащую 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>

Удачи.

Это исправило мои проблемы после того, как обновление с VS2008 до VS2010 нарушило мои тесты, спасибо.

Ergwun 09.12.2011 05:56

Я столкнулся с аналогичной проблемой при тестировании веб-сервиса, в котором используется проект .NET 3.51. Я получал ошибку IIS 500. Я удалил старые привязки сборки, как прокомментировал Хэл Диггс, и это сработало.

У меня была эта проблема раньше, и в тот момент я сдался, прочитав все, что я мог найти в Google (включая эту тему).

В моем случае решение оказалось простым. Все, что мне нужно было сделать, это не использовать тестовые атрибуты ASP.NET и просто протестировать проект MVC как DLL.

Шаг 1

Удалите лишние атрибуты из теста.

[TestMethod]
public void TestMethod1()
{
    Page page = TestContext.RequestedPage;
    Assert.IsTrue(false, "Test ran, at least.");
}

Шаг 2

В разделе «Охват кода» снимите флажок «Проект MVC» и вручную добавьте DLL проекта MVC.

alt text

Вуаля, он инструментирован как обычная сборка, без ошибок, не запускает сервер разработки, а также не дает сбоев в сборке команды.

Resharper не вызывал этих проблем. Он запустит для вас сеанс с NUnit и позаботится обо всем. Это действительно должно быть в VS.

Omnia9 06.09.2011 19:14

Я получил такое же сообщение об ошибке при модульном тестировании веб-приложения с помощью 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)

Другие вопросы по теме