.net - tools - ¿Por qué el Visual Studio 2015/2017/2019 Test Runner no descubre mis pruebas xUnit v2?
unit test example (30)
ACTUALIZACIÓN: Agregar un 2019; El mecanismo de integración de descubrimiento / corredor es el mismo que para 2017 y 2015, por lo que las cosas clave que pueden salir mal son las mismas.
He leído por qué el corredor de xUnit no encuentra mis pruebas, lo que cubre las razones por las cuales xUnit nunca podría encontrar sus pruebas, pero mi problema es diferente: estoy seguro de que no hay nada sutil en mis pruebas; (han trabajado en otros entornos, esto parece ser solo mi máquina): el Visual Studio Test Runner en Visual Studio 2015 [Community Edition] simplemente no muestra ninguna de mis pruebas. No estoy haciendo nada remotamente emocionante; las pruebas se dirigen a xUnit.net v2 en el escritorio.
He buscado en la ventana Salida y no veo nada en Prueba en las pestañas Mostrar salida .
-
Elimine las excepciones de descubrimiento de sus consultas; vaya a la ventana de salida (Ctrl-Alt-O), luego cambie el resultado del menú desplegable (Shift-Alt-S) a Pruebas y asegúrese de que no haya excepciones de descubrimiento
-
Como se sugiere en esta respuesta (votar si la técnica ayuda) ejecutar el corredor de la consola de escritorio ( instructions ) puede ser una buena verificación cruzada para eliminar otras posibilidades, por ejemplo, archivos de configuración destrozados:
packages/xunit.runner.console.2.2.0/tools/xunit.console <tests.dll>
-
Prueba | Configuración de prueba | La arquitectura de procesador predeterminada puede ayudar si sus pruebas son específicas para x86 / x64 y el descubrimiento desencadena excepciones relacionadas con bittingness, es decir, no AnyCpu
Vaya a leer la documentación : es completa, actualizada, incluye información de solución de problemas y toma PR: -
Nota importante: si ya instaló el xUnit.net Visual Studio Runner VSIX (extensión), primero debe desinstalarlo. El corredor de Visual Studio solo se distribuye a través de NuGet ahora. Para eliminarlo, vaya a Herramientas > Extensiones y actualizaciones . Desplácese hasta el final de la lista y, si xUnit.net está instalado, desinstálelo. Esto te obligará a reiniciar Visual Studio.
Si tiene problemas para descubrir o ejecutar pruebas, puede ser víctima de un caché de corredor dañado dentro de Visual Studio. Para borrar esta caché, cierre todas las instancias de Visual Studio, luego elimine la carpeta
%TEMP%/VisualStudioTestExplorerExtensions
. También asegúrese de que su proyecto solo esté vinculado a una única versión del paquete NuGet de Visual Studio Runner (xunit.runner.visualstudio
).
Los siguientes pasos me funcionaron:
-
(Solo si sospecha que hay un desorden grave en su máquina; en general, el caso más común es que la integración de Visual Studio simplemente todavía no está instalada)
Realice
DEL %TEMP%/VisualStudioTestExplorerExtensions
como se recomienda: -PS> del $env:TEMP/VisualStudioTestExplorerExtensions
-
Instale el paquete
xunit.runner.visualstudio
en todos los proyectos de prueba-
Paquete:
.paket/paket add nuget xunit.runner.visualstudio -i
paket.dependencies
terminar con lo siguiente en suspaket.dependencies
:nuget xunit.runner.visualstudio version_in_path: true
Tenga en cuenta la
version_in_path: true
bitversion_in_path: true
es importante -
Nuget: vaya a la consola del Administrador de paquetes (Alt-T, N, O) y
Install-Package xunit.runner.visualstudio)
Reconstruya para asegurarse de que
xunit.runner
termine en el directorio de salida -
-
Cerrar Test Explorer <- este fue el bit que faltaba para mí
-
Vuelva a abrir el Explorador de pruebas (Alt-S, W, T)
-
Ejecutar todas las pruebas (Ctrl R, A)
Aquí está la solución que funcionó para nosotros. No es el mejor, pero quizás uno pueda beneficiarse.
Fondo:
- Nuestros scripts se desarrollaron con VS 2013 y utilizaron NUnit VS Adapter 2.1 ..
- Recientemente migramos a VS 2017 y cuando abrimos la misma solución, la prueba no se mostraría en el Explorador de pruebas
En Build veríamos este mensaje:
[Informational] NUnit Adapter 3.10.0.21: Test discovery starting
[Informational] Assembly contains no NUnit 3.0 tests: C:/ihealautomatedTests/SeleniumTest/bin/x86/Debug/SeleniumTest.dll
[Informational] NUnit Adapter 3.10.0.21: Test discovery complete
Solución (temporal):
- Desinstalar el adaptador NUnit 3.10 ...
- Instale NUnit VS Adapter 2.1 ..
Ahora se muestran las pruebas.
Asegúrese de no haber escrito sus pruebas unitarias en una biblioteca de clases .NET Standard 2.0. El visualstudio runner no admite la ejecución de pruebas en bibliotecas de clase netstandard2.0 en el momento de escribir este artículo.
Verifique aquí la matriz de compatibilidad de Test Runner:
Debe actualizar todos sus paquetes cuando mueva VS2015 a VS2017 para descubrir la prueba en el explorador de prueba.
Descargo de responsabilidad: no se trata de xunit con Visual Studio 2015, sino de Visual Studio 2017 con una aplicación de prueba de unidad UWP (MSTest). Llegué a este hilo buscando lo mismo, así que tal vez alguien más haga lo mismo :)
La solución para mí fue actualizar los paquetes nuget para MSTest.TestAdapter y MSTest.TestFramework. Parece que cuando crea una aplicación de prueba unitaria para UWP no obtiene automáticamente las últimas versiones.
Después de pasar 2 días ... nada de lo anterior funcionó para mí. La única "solución" fue: Ir a las propiedades del proyecto -> Crear pestaña. Luego haga clic en el botón Avanzado en la esquina inferior derecha del panel. Cambie "Información de depuración:" a "completo" y haga clic en Aceptar.
El culpable más común para mí ha sido Visual Studio tratando de ejecutar las pruebas usando una arquitectura diferente a la biblioteca que está probando. Lamentablemente, hay varios lugares donde parece que esto puede salir mal.
En VS 2017, intente crear un archivo de Configuración de ejecución, por ejemplo,
Default.runsettings
en su proyecto de prueba.
Si su lib principal es x64, el contenido debe ser:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<RunConfiguration>
<TargetPlatform>x64</TargetPlatform>
</RunConfiguration>
</RunSettings>
Luego elija este archivo de Prueba -> Configuración de prueba -> Seleccionar archivo de configuración de prueba.
Luego, en Prueba -> Configuración de prueba, Arquitectura de procesador predeterminada, elija nuevamente la arquitectura correcta.
Asegúrese de limpiar y construir la solución completa. Es posible que deba cerrar y volver a abrir la ventana Explorador de pruebas. Busque cualquier error adicional en la ventana Salida -> Prueba, para obtener más pistas sobre tipos de arquitectura incorrectos.
Para su información, puede encontrar entradas adicionales de Configuración de prueba here .
En mi caso, tenía 2 proyectos de prueba diferentes en la solución. Las pruebas del Proyecto 1 se pudieron encontrar, pero las pruebas del Proyecto 2 no. Encontré que primero al descargar el proyecto de prueba 1, luego al cerrar VS> borrar mis archivos temporales> volver a abrir la solución> reconstruir, permití que VS descubriera mis pruebas del proyecto 2.
Supongo que algo debe estar en conflicto entre los dos proyectos de prueba y esta fue la forma más rápida de ponerme en funcionamiento en unos minutos. Los problemas pueden resolverse más tarde :).
En mi caso, tengo varios proyectos de prueba en la misma solución, y solo uno de los proyectos no mostraba el "Explorador de pruebas"
Fui al "Gestionar paquete Nuget para la solución" haciendo clic derecho en la solución.
Noté que debajo de la pestaña "Consolidar" había algunos paquetes nuget de "Prueba" que no estaban sincronizados entre los proyectos. Hice clic en "Instalar" y aparecieron mis pruebas faltantes.
Esto también puede deberse a que la casilla de verificación de compilación no está marcada para el proyecto de plataforma actual en la configuración de compilación. Haga clic en Construir | Administrador de configuración, luego asegúrese de que los proyectos de prueba tengan una marca en la columna de compilación para la plataforma que está utilizando (por ejemplo, ''x86'').
Esta fue definitivamente la solución que funcionó para mí.
Estoy usando xUnit 2.2.0.
Mi problema fue que mi solución no pudo encontrar ciertos dlls y
app.config
estaba tratando de resolverlos.
El error no aparecía en la ventana de salida de prueba en Visual Studio.
Pude identificar el error cuando instalé
xunit.runner.console
e intenté ejecutar las pruebas a través de la línea de comandos.
Hay otra razón que puede hacer que
Test Explorer
no muestre ninguna prueba, y tiene que ver con el nuevo formato de archivo
.pdb
portátil introducido con Visual Studio 2017 / para .NET Core que puede romper algunas herramientas de VS.
(Antecedentes: consulte
el informe de error "Mono.Cecil causa OutOfMemoryException con los nuevos PDB de .csproj"
).
¿No se encuentran sus pruebas debido al nuevo
.pdb
portátil
.pdb
(símbolos de depuración)?
- Abra la ventana de salida .
- Cambie la selección desplegable para Mostrar salida de a Pruebas .
-
Si ve resultados como los siguientes (posiblemente repetidos una vez para cada una de sus pruebas), entonces tiene el problema descrito en esta respuesta:
Exception System.OutOfMemoryException, Exception converting <SignatureOfYourTestMethod> Array dimensions exceeded supported range.
En caso afirmativo, haga esto para resolver el problema:
- Abra las Propiedades de su proyecto de prueba (seleccione el proyecto de prueba en el Explorador de soluciones y presione Alt + Entrar ).
- Cambie a la pestaña Construir .
- Haga clic en el botón Avanzado ... (ubicado al final de la página de esa pestaña).
-
En el menú desplegable etiquetado
Información de depuración
, elija
none
,pdb-only
ofull
, pero NOportable
. Es esta última configuración la que hace que no se encuentren las pruebas. -
Haga clic en
Aceptar
y limpie y reconstruya su proyecto.
Si desea estar más seguro, vaya al directorio de salida de su proyecto de prueba y limpie todos los archivos
.pdb
antes de reconstruir. Ahora tus pruebas deberían estar de vuelta.
He estado luchando con esto toda la tarde mientras trabajaba con un proyecto ASP Core y xUnit 2.2.0.
La solución para mí fue agregar una referencia a
Microsoft.DotNet.InternalAbstractions
Descubrí esto cuando intenté ejecutar el proyecto de prueba manualmente con la
dotnet test
que falló pero informó que faltaban las
dotnet test
InternalAbstractions
.
No vi este error en la ventana de resultados de la prueba cuando falló el descubrimiento automático.
La única información que vi en la ventana de descubrimiento fue un código de retorno, que no significaba nada para mí en ese momento, pero en retrospectiva probablemente indicaba un error.
I Cleared Temp,% Temp% y Prefetch. Luego intenté reabrir VS y pude encontrar los métodos de prueba
Instale el paquete
xunit.runner.visualstudio
para el proyecto de prueba
Intenté la mayoría de las sugerencias anteriores y nada funcionó. En mi caso, estoy en un equipo y aparecían pruebas para otros desarrolladores para la misma solución. Entonces, intenté eliminar mi carpeta .vs, pero tampoco tuve suerte.
Terminé eliminando mi carpeta local por completo y volviendo a clonar el repositorio. Eso lo resolvió para mí.
La razón en mi caso fue que la compilación de destino no era la misma entre el depurador del proyecto y el corredor de prueba. Para unificar esos elementos:
- Prueba> Configuración de prueba> Arquitectura de procesador predeterminada. luego seleccione X64 o X86.
- Proyecto> (su proyecto) Propiedades> Compilación (pestaña)> destino de la plataforma.
Después de que sean idénticos, reconstruya su solución y luego le aparecerán métodos de prueba.
Me ha sucedido un par de veces: cuando limpio el proyecto y lo construyo de nuevo, tiende a estar bien.
Me sucedió cuando hice mis primeros intentos de caminar con IntelliTest en VS 2017.
A veces, cuando IntelliTest crea automáticamente el proyecto de prueba, la referencia del ensamblaje a
Microsoft.ExtendedReflection
(
... / Archivos de programa (x86) / Microsoft Visual Studio / 2017 / Enterprise / Common7 / IDE / Extensions / Microsoft / Pex / Microsoft .ExtendedReflection.dll
) no se encuentra.
Cuando se agrega, las pruebas generadas se mostrarán en el explorador de pruebas después de la compilación.
Mi problema se resolvió instalando el nuget xunit.runner.visualstudio
Ninguna de las soluciones anteriores funcionó para mí (dotnetcore 1.1, VS2017). Esto es lo que lo solucionó:
- Agregue el paquete NuGet "Microsoft.TestPlatform.TestHost"
- Agregue el paquete NuGet "Microsoft.NET.Test.Sdk"
Esos son adicionales a estos paquetes que instalé antes:
- xunit (2.3.0-beta1-build3642)
- xunit.runner.visualstudio (2.3.0-beta1-build1309)
No sé si algunos de ustedes también usan JustMock, pero tuve que deshabilitar el generador de perfiles en VS 2017 para que funcione la detección de pruebas.
Puedo proporcionar una solución para un caso extremo que encontré hace unos días. Sin embargo, no va a ser la solución que se ajuste a todos los escenarios descritos anteriormente, para el caso extremo lo resolví.
Tuve el mismo problema con VS 2017 más reciente (versión 15.5.7) y XUnit 2.3.1. Se instaló el paquete xunit.runner.visualstudio, sin embargo, las pruebas no aparecieron en el explorador de pruebas incorporado de VisualStudio.
Estaba trabajando en un proyecto heredado que apuntaba a .NET Framework 4.5. Sin embargo, comenzando con la versión 2.2. XUnit no admite marcos .NET inferiores a 4.5.2 (consulte las Notas de la versión - XUnit 2.2: 19 de febrero de 2017
Cambiar el marco de destino del proyecto de prueba a una versión> = 4.5.2 funcionó para mí. No tiene que cambiar la versión del proyecto que está probando, se trata solo del proyecto de prueba en sí.
Se encontró con un problema similar con VS sin descubrir métodos de prueba. En mi caso, tenía la palabra clave estática con el método, que eliminé y funcionó.
[TestMethod]
Before: public static void Test1()
After: public void Test1()
Sigue estos pasos:
-
Actualice sus
MsTest.TestAdapter
yMsTest.TestFramework
desde elnugget package manager
. - Limpia tu solución
- Crea tu solución.
Sufrí de este problema durante mucho tiempo.
-
Tenía alrededor de 100 proyectos de diferentes versiones implementadas en diferentes servidores.
-
Actualizar xunit de 2.2.0 a 2.3.1 no fue una solución porque la compilación fallaba en 2.3.1.
Luego acabo de actualizar xunit.runner.visualstudio a 2.3.1 y todo comenzó a funcionar bien. He usado este comando en mi consola del administrador de paquetes para actualizar mi paquete xunit.runner.visualstudio
Get-Project ComapanyName.ProjectName.*.Tests | Install-Package xunit.runner.visualstudio -Version 2.3.1
Tenía muchos proyectos de diferente tipo en mi solución y no pude ejecutar el proyecto de prueba Xunit. Los descargué todos excepto mi proyecto Xunit y luego reconstruí la solución, las pruebas aparecieron en Visual Studio y pude ejecutarlas.
Verifique también si hay un archivo app.config completamente vacío (completamente en blanco sin absolutamente ningún marcado) dentro del proyecto de prueba. Este fue el culpable en mi caso.