Tengo una biblioteca de clases básica dotnet simple con un solo método de prueba XUnit:
TestLib.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.SDK" Version="15.9.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.console" Version="2.4.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xunit.runners" Version="2.0.0" />
</ItemGroup>
</Project>
BasicTest.cs:
using Xunit;
namespace TestLib
{
public class BasicTest
{
[Fact(DisplayName = "Basic unit test")]
[Trait("Category", "unit")]
public void TestStringHelper()
{
var sut = "sut";
var verify = "sut";
Assert.Equal(sut, verify);
}
}
}
Si entro el proyecto en la CLI y escribo dotnet build
el proyecto builds. Si escribo dotnet test
, obtengo esto:
C:\git\Testing\TestLib> dotnet test
C:\git\Testing\TestLib\TestLib.csproj : warning NU1701: Package 'xunit.runner.visualstudio 2.4.1' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Build started, please wait...
C:\git\Testing\TestLib\TestLib.csproj : warning NU1701: Package 'xunit.runner.visualstudio 2.4.1' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Build completed.
Test run for C:\git\Testing\TestLib\bin\Debug\netstandard2.0\TestLib.dll(.NETStandard,Version=v2.0)
Microsoft (R) Test Execution Command Line Tool Version 16.0.0-preview-20181205-02
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
Unable to find C:\git\Testing\TestLib\bin\Debug\netstandard2.0\testhost.dll. Please publish your test project and retry.
Test Run Aborted.
¿Qué necesito cambiar para que se ejecute la prueba?
Si ayuda, VS Code tampoco muestra las pruebas en su explorador de pruebas.
c#
unit-testing
.net-core
xunit.net
Matt W
fuente
fuente
Respuestas:
En mi caso, el problema era que estaba apuntando a .NET Core 2.0 y el cambio a .NET Core 2.1 resolvió el problema. Sin embargo, estaba usando Microsoft.NET.Test.SDK v16.4.0 en lugar de 15.9.0.
fuente
La instalación del
Microsoft.NET.Test.Sdk
paquete desde el administrador de paquetes nuget resolvió mi problema.fuente
xunit
,xunit.runner.visualstudio
yMicrosoft.NET.Test.Sdk
al proyecto, sigue siendo el mismo resultado. Creo que hay otro factor en juego ...netstandard2.0
proyecto en lugar de unnetcoreapp2.2
proyecto. Tan pronto como cambié a este último, funcionó. Los únicos paquetes nuget que necesitaba eranxunit
,xunit.runner.visualstudio
yMicrosoft.NET.Test.Sdk
.dotnet clean
Había creado una biblioteca de clases e intenté usar el paquete XUnit NuGet en ella.
Lo que debería haber hecho fue crear un proyecto XUnit usando este comando:
dotnet new xunit -n TestProject
Encontré esta página útil .
fuente
--force
para obligarlo a reconstruir el proyecto como un proyecto de prueba de xUnit. Según el comentario de @ Manfred, deberá actualizar / volver a agregar cualquier referencia de proyecto que tuviera en ese proyecto.xunit.runner.visualstudio
que puede encontrar en nuget.org/packages/xunit.runner.visualstudioEn mi caso, el problema fue que tengo un proyecto de extensión para xunit. También hay un proyecto de prueba para probar las extensiones. Cuando ejecuté
dotnet test
mi solución, mi proyecto de extensión también se seleccionó como un proyecto de prueba unitaria (me tomó un tiempo darme cuenta de esto). La razón de esto es que hace referencia a algunos paquetes xunit. Uno de estos paquetes xunit establece automáticamente la<IsTestProject>true</IsTestProject>
propiedad en su archivo csprj. Esto es realmente algo bueno ya que el 99,99% de los proyectos que hacen referencia a xunit son en realidad pruebas unitarias. Finalmente pude resolver esto estableciendo explícitamente<PropertyGroup> ... <IsTestProject>false</IsTestProject> ... </PropertyGroup>
Manualmente en mi archivo csproj. Entonces el problema desapareció.
fuente
Esto me sucedió después de actualizar Microsoft.NET.Test.Sdk de v16.2.0 a v16.4.0 con
<TargetFramework>netcoreapp2.0</TargetFramework>
. Actualizar para<TargetFramework>netcoreapp3.0</TargetFramework>
resolver el problema por mí.fuente
Se solucionó instalando
xunit.runner.visualstudio
.fuente
Me he encontrado con esto un par de veces y siempre olvido lo que pasa. Más recientemente tuve:
Paquetes para mi proyecto de prueba:
Yo estaba viendo:
Y todo lo que necesitaba hacer era agregar a mi proyecto de prueba el paquete nuget que faltaba: "Microsoft.NET.Test.SDK"
Todo volvió a la normalidad en este punto.
fuente
Si está utilizando xUnit, asegúrese de que su tipo de proyecto no sea tan netstanderd. Como xUnit no es compatible con netstanderd , cámbielo a coreapp2.0 u otros.
fuente
Encontré un problema de compatibilidad muy interesante con una versión. Actualicé mi código como una práctica normal y cambié a xUnit.runner.visualstudio 2.4.2. Dejó de funcionar para .Net Core 3.1. Tuve que degradar a 2.4.1 y comenzó a funcionar nuevamente.
fuente
Estaba construyendo un proyecto de prueba netcoreapp2.2 y luego tratando de ejecutarlo
dotnet vstest
desde la carpeta bin. Noté que las DLL de prueba de Microsoft de:<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
no se estaban enviando a mi carpeta bin. En lugar de simplemente compilar, ejecuté una publicación que incluía las DLL necesarias en la carpeta de salida y luego pude ejecutar
dotnet vstest
desde allí.fuente
Si está apuntando a netstandard2.0, esto no funcionará. Si está utilizando .NET Core. asegúrese de que el .csproj contenga las siguientes líneas:
<TargetFramework>netcoreapp3.0</TargetFramework>
y tambien contiene el paquete
Microsoft.NET.Test.Sdk
fuente
mismo problema que enfrenté para el proyecto Nunit (.net core 3.1). Estaba usando Microsoft.NET.Test.SDK v16.6.1, bajé la versión a 15.9.0. Y empieza a funcionar
fuente
Se encontró con este error, la causa principal fue que las pruebas alcanzaron la longitud máxima para una ruta de Windows (MAX_PATH), que se define como 260 caracteres.
fuente
Si está ejecutando un proyecto mediante la clonación, la solución es instalar Microsoft.NET.Test.Sdk. Cómo: Herramientas> Administrador de paquetes Nuget> Administrar paquetes Nuget para la solución ...> Busque Microsoft.NET.Test.Sdk e instálelo para su proyecto de prueba.
fuente
Esto también podría deberse al intento inadvertido de ejecutar un proyecto que no es de prueba; esto suele ocurrir cuando el filtro de archivos de prueba es demasiado amplio.
fuente
Recibí este error al intentar depurar una prueba unitaria. A continuación se muestran los pasos que probé.
¡¡¡Hurra!!! funcionó :-) Nunca te pierdas de probar el último paso ;-) Espero que esto ayude a alguien como yo.
fuente