Ошибка 500 при запуске модульного теста Visual Studio ASP.NET - PullRequest
16 голосов
/ 04 ноября 2008

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

    [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://localhost:3418/SysCoord/VSEnterpriseHelper.axd' возвратил ошибку: удаленный сервер вернул ошибку: (404) Not Found. Удаленный сервер возвратил ошибку: (404) Not Found.

Страница работает как надо в браузере по URL: http://localhost:3418/Web/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.

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

Ответы [ 12 ]

15 голосов
/ 21 октября 2010

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

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

Шаг 1

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

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

Шаг 2

В Code Coverage снимите флажок с проекта MVC и добавьте DLL-файл проекта MVC вручную.

alt text

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

8 голосов
/ 18 августа 2010

Я обнаружил, что используя 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>

Удачи.

2 голосов
/ 27 февраля 2009

У меня была та же проблема, что и у вас, но мой опыт был немного другим.

Я на Vista x64, мои разработчики на xp x64 ... у них вообще не было проблем. Я только что обновился и не смог запустить какой-либо модульный тест для проекта asp.net MVC. Я получаю ту же ошибку 500, которую вы получали.

Я отключил покрытие кода, все волшебным образом начало работать.

1 голос
/ 12 октября 2011

Я установил модульный тест по умолчанию, который появился с ошибкой, которая привела меня сюда. Я просто удалил следующее (ниже). Затем нажал кнопку отладки текущего контекста и бум, отлично: S.

    [HostType("ASP.NET")]
    [AspNetDevelopmentServerHost("C:\\Inetpub\\....]
1 голос
/ 17 января 2011

Я получил то же сообщение об ошибке при модульном тестировании веб-приложения с Visual Studio 2010. Единственное отличие состоит в том, что я использовал IIS, то есть пропустил директиву [AspNetDevelopmentServerHost("%PathToWebRoot%")].

Я подозреваю, что проблема заключается в том, что я использовал IIS версии 5.1. Подробнее здесь:

http://ibsta.blogspot.com/2011/01/unit-testing-fun-under-visual-studio.html

1 голос
/ 01 сентября 2010

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

1 голос
/ 06 ноября 2008

Исходя из вашего свидетельства, я бы предположил, что ссылка на какую-либо сборку, содержащую MyApplicationFramework.Profile.EmployeeSearchCriteria, отсутствует ни в проекте модульного тестирования, ни в веб-проекте - хотя я действительно думаю, что вам потребуется только ссылка в веб-проекте, но Я не осведомлен о том, как ведет себя веб-сервер VS при использовании в качестве части модульного теста.

0 голосов
/ 25 января 2017

Для меня именно Решарпер вызвал эту проблему. Как только я его приостановил (Сервис -> Параметры -> Resharper -> Общие -> Приостановить) все заработало. (с использованием VS2010SP1 и Resharper Ultimate 2016.1.2)

0 голосов
/ 08 декабря 2016

У меня возникла такая же проблема. Затем я проверил свойства как веб-проекта, так и проекта модульного тестирования. И обнаружил, что целевые рамки были отличны друг от друга. Я установил целевой фреймворк для проекта на .Net framework 4 (в моем случае). Наконец снова запустил метод тестирования, и он сработал.

Спасибо.

0 голосов
/ 23 июля 2010

Убедитесь, что ваше веб-приложение ориентировано на Framework 4.0. Если вы пытаетесь проверить 2.0, 3.0 или 3.5 проекта, вы получите (500) Внутренняя ошибка сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...