testing - test - xunit net core web api
La integraciĆ³n y las pruebas unitarias ya no funcionan en ASP.NET Core 2.1 al no encontrar los ensamblajes en tiempo de ejecuciĆ³n (2)
ASP.NET Core 2.1 usa un nuevo "marco compartido" para ejecutar las aplicaciones de ASP.NET Core. Los proyectos de prueba deben modificarse / actualizarse para utilizar también este marco compartido utilizando uno de los siguientes enfoques:
Cambie la etiqueta
<Project>
del proyecto de prueba en la primera línea para usar el SDK web (Microsoft.NET.Sdk.Web
lugar deMicrosoft.NET.Sdk
) y agregue una referencia del paquete aMicrosoft.AspNetCore.App
(o.All
si están utilizando eso dentro del proyecto web) sin especificar una versiónEl archivo de proyecto (.csproj) del proyecto de prueba ahora debería tener este aspecto:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.1</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.1.1" /> <PackageReference Include="Microsoft.AspNetCore.App" /> <!-- other references to xunit, test SDK etc. --> </ItemGroup> <ItemGroup> <ProjectReference Include="../AspNetCoreAppToTest/AspNetCoreAppToTest.csproj" /> </ItemGroup> </Project>
Alternativa: deje el
Sdk
como está y agregue unaPackageReference
al paquete de marco compartido, pero especifique una versión.Esto se puede hacer simplemente agregando una referencia de NuGet a
Microsoft.AspNetCore.App
. Sin embargo, esto puede causar problemas, ya que el SDK puede optar por actualizar la referencia cuando se lance una nueva versión de parche de ASP.NET Core y se actualicen las herramientas para reflejar esto. Necesitará actualizar la referencia de NuGet para cada versión de parche.
Al crear proyectos de prueba o actualizar una aplicación y realizar pruebas a ASP.NET Core 2.1 / .NET Core 2.1, la ejecución de pruebas falla con excepciones de carga de ensamblaje, como
System.IO.FileNotFoundException: No se pudo cargar el archivo o el ensamblaje ''Microsoft.AspNetCore, Version = 2.1.0.0, Culture = neutral, PublicKeyToken = adb9793829ddae60''. El sistema no puede encontrar el archivo especificado.
Al agregar referencias a otras bibliotecas también hay advertencias de compilación como
advertencia MSB3277: Se encontraron conflictos entre diferentes versiones de "Microsoft.Extensions.Options" que no se pudieron resolver.
advertencia MSB3277: Se encontraron conflictos entre diferentes versiones de "Microsoft.Extensions.Configuration.Abstractions" que no se pudieron resolver.
advertencia MSB3277: Se encontraron conflictos entre diferentes versiones de "Microsoft.AspNetCore.Hosting.Abstractions" que no se pudieron resolver.
advertencia MSB3277: Se encontraron conflictos entre diferentes versiones de "Microsoft.Extensions.DependencyInjection.Abstractions" que no se pudieron resolver.
advertencia MSB3277: Se encontraron conflictos entre diferentes versiones de "Microsoft.AspNetCore.Http.Abstractions" que no se pudieron resolver.
advertencia MSB3277: Se encontraron conflictos entre diferentes versiones de "Microsoft.AspNetCore.Http.Features" que no se pudieron resolver.
¿Cómo puedo hacer que los proyectos de prueba funcionen para probar las aplicaciones ASP.NET Core 2.1?
Estaba teniendo el mismo problema. Agregue esto al Proyecto de Prueba resuelto el problema
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.1"/>