#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