Не удалось загрузить файл или сборку Microsoft.AspNetCore.Mvc.ApiExplorer в моем проекте модульного тестирования .NET Core

#c# #unit-testing #asp.net-core

#c# #модульное тестирование #asp.net-core

Вопрос:

У меня есть два проекта в решении .NET Core:

  • TestWebApp (типичный ASP.NET Веб-приложение Core 2.2)
  • Приложение для модульного тестирования

Мое модульное тестовое приложение жалуется во время выполнения, что отсутствует ряд файлов. Мне интересно, почему эти файлы отсутствуют, когда я думал, что они должны быть предоставлены / доступны через TestWebApp .

Вот файлы csproj:

TestWebApp

 <Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Hellang.Middleware.ProblemDetails" Version="3.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

....

  

Проект модульного тестирования / приложение

 <Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>

    <IsPackable>false</IsPackable>

    <LangVersion>latest</LangVersion>
  </PropertyGroup>

  ....

  <ItemGroup>
    <ProjectReference Include="..TestWebApplicationTestWebApplication.csproj" />
  </ItemGroup>

   ...
  

Вот первая ошибка, которую я получаю при запуске любого модульного теста, теперь:

Сообщение: System.IO.FileNotFoundException: не удалось загрузить файл или сборку ‘Microsoft.AspNetCore.Mvc.ApiExplorer, версия = 2.2.0.0, Культура = нейтральная, PublicKeyToken = adb9793829ddae60’. Системе не удается найти указанный файл

Итак, затем я вручную добавляю nuget в проект модульного тестирования, перекомпилирую и запускаю все тесты, и теперь я получаю эту ошибку во время выполнения:

Сообщение: System.IO.FileNotFoundException: не удалось загрузить файл или сборку ‘Microsoft.AspNetCore.Razor.Время выполнения, версия = 2.2.0.0, культура = нейтральная, PublicKeyToken = adb9793829ddae60’. Система не может найти указанный файл.

Так что теперь он не может найти другой файл.. который, как я думал, должен был быть удален через TestWebApp?

Nuget добавляет этот файл … компилирует .. и все тесты выполняются нормально.

Итак, зачем мне нужно было вручную добавлять оба этих nugets в тестовый проект xunit?

Ответ №1:

Возникла та же проблема, но после прочтения части «Предварительные требования к тестовому приложению» в этом документе она заработала.

Что я пропустил в файле проекта, так это:

Используйте

 <Project Sdk="Microsoft.NET.Sdk.Web"> instead of <Project Sdk="Microsoft.NET.Sdk"> at the top.
  

И использовал следующие пакеты:

 <PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.2.0" />
  

Комментарии:

1. Я нашел этот ответ в сочетании с learn.microsoft.com/en-us/aspnet/core/test / … решил аналогичную проблему для меня net6.0