Las pruebas no se ejecutan en Test Explorer

146

Actualmente estoy trabajando en una solución que actualmente tiene 32 pruebas unitarias. He estado trabajando con el corredor de prueba resharper, que funciona bien. Todas las pruebas se están ejecutando, todas las pruebas muestran el resultado correcto de la prueba. Ahora un compañero de trabajo me dijo que las pruebas no se están ejecutando en su máquina con el explorador de pruebas de Visual Studio. Tampoco funcionan en mi máquina, por lo que puedo excluir algunos archivos locales faltantes o algo así.

El Explorador de pruebas muestra todas las pruebas unitarias, pero una vez que hace clic en "Ejecutar todo", todas las pruebas se atenúan y no muestran ningún resultado de la ejecución de la prueba:

ingrese la descripción de la imagen aquí

  • Todas las clases de prueba son públicas.
  • Todas las clases de prueba tienen el [TestClass]atributo declarado
  • Todos los métodos de prueba usan el [TestMethod]atributo
  • Tanto el código de productividad como los proyectos de prueba están dirigidos a .NET 3.5.
  • Ya he tratado de generación limpia mi solución, y / o borrar todos obj, bin, Debugy Releasecarpetas

Aprecio cualquier pista que pueda causar tal comportamiento.

ElGauchooo
fuente
3
Actualiza tu ReSharper. Consulte este stackoverflow.com/questions/16011775/…
kmhigashioka
18
¿No sería maravilloso si VS dijera por qué no se ejecutó una prueba? Plataforma de destino no coincidente, falta adaptador de prueba, ... :(
Bernhard Hofmann
1
¿Dónde se menciona que usan ReSharper?
Alex
55
@BernhardHofmann Encontré un problema como este en este momento y resulta que VS estaba escupiendo algunos mensajes de error en Salida> Pruebas. Importante. Frustrante que VS no los hace más visibles, pero ese es un lugar para mirar en una situación como esta.
JLRishe
2
Todos ustedes podrían estar interesados ​​en votar esta solicitud de función: developercommunity.visualstudio.com/idea/947742/…
Kyle Delaney

Respuestas:

157

Si sus proyectos no son todos AnyCpu, entonces también puede verificar que las siguientes 2 configuraciones coincidan:

  1. [Proyecto de prueba de clic derecho] -> propiedades -> Compilación -> Destino de plataforma - por ejemplo, x64

  2. [Menú principal] -> Prueba -> Configuración de prueba -> Arquitectura de procesador predeterminada -> X64

Descubrí que cuando no coincidían, mi proyecto de prueba no se ejecutaba silenciosamente.

Joseph Simpson
fuente
55
esta respuesta es cuello y cuello con "enciéndelo y apágalo de nuevo" así que, si esto funciona para ti, por favor, vota a favor.
lukkea
este solucionó mis problemas (cambio de plataformas mixtas a anycpu)
Marcel Studer
1
asegúrese de que sus proyectos de prueba no sean netstandard2.0 sino netcoreapp2.2
user2033412
44
Trabajó. Realmente con VS, ya sabes, nos daría una advertencia clara o un mensaje de error o algo así.
anon
9
Versión VS2019: Menú principal -> Prueba -> Arquitectura del procesador para proyectos AnyCPU -> X64.
StackOverthrow
64

Tuve el mismo problema en VS 2017. En mi caso, se resolvió reiniciando VS.

Pablo Rausch
fuente
77
mi comentario anterior de por qué di este voto negativo fue eliminado, así que seré un poco más claro. Esta no es una solución para el problema; Es una solución muy temporal que no resuelve el problema subyacente. No creo que SO deba ser un lugar al que la gente deba venir a que le digan "apáguelo y enciéndalo de nuevo", eso es conocimiento que debe aprender mucho antes de llegar aquí. Consulte la respuesta de Joseph Simpson para obtener una solución.
lukkea
55
@lukkea Seguí la respuesta de Joseph Simpson y confirmó que todos mis proyectos estaban en AnyCpu. Todavía tenía el problema descrito aquí. Para mí, simplemente reiniciar VS ayudó. Esa no es la primera vez que VS2012 tiene este tipo de problemas (y no solo en mi máquina). Estoy de acuerdo con usted en que esta no es una buena solución, pero si el proyecto no tiene nada de malo, esa podría ser la única ayuda. Sin embargo, uno debería verificar si limpiar una reconstrucción tampoco ayuda.
Sascha
2
Si solo 'encenderlo y apagarlo' solucionara todos mis problemas. Todavía sorprende cuántos arregla. Es un poco vergonzoso que tuve que ir a stackoverflow para que me lo recuerden, pero esta respuesta me pareció útil.
Richard Garside
2
@lukka a veces Visual Studio es el problema subyacente y reiniciar es la solución
JSON
1
Todavía funciona para VS2019 ....
Tronald
44

Si está utilizando NUnit en lugar de MSTest, necesitará la extensión del adaptador de prueba NUnit para Visual Studio 2012/2013.

Muelles Myers
fuente
9
Esto me ayudó a pensar que necesitaba instalar el "Adaptador de prueba NUnit 3": marketplace.visualstudio.com/…
Westerlund.io
10
En VS 2019 funcionó para mí instalar el adaptador desde el administrador de paquetes nuget.org/packages/NUnit3TestAdapter
maylon
De acuerdo con esta página , también debe instalar Microsoft.NET.Test.Sdkdesde Nuget
BlueRaja - Danny Pflughoeft
En VS 2017 instalé el adaptador de prueba de Extension Nunit 3 y funcionó.
Bob Lokerse
En VS 2019 también instalé el adaptador de prueba de Extension Nunit 3 y funcionó. Una nota: también necesitaba actualizar Visual Studio.
Bob Lokerse
42

Tuve que cambiar mis métodos de prueba asíncronos para devolver Task en lugar de anular.

Las pruebas fueron entonces activas y ejecutables en Test Explorer.

Kevin Mills
fuente
1
No hay forma de esperar a que termine un método vacío asíncrono. El vacío asíncrono es "dispara y olvida". Es por eso que no pueden ser probados.
Ketobomb
La palidez que hice cuando leí esto resonó en la tierra ... Gracias por señalar mi estupidez. Eso funcionó para mí. Upvoted
JP Chapleau
Aunque archivado en la categoría "no duh". Desearía que esto se votara más, ya que es muy obvio que su tipo de devolución debe ser Tarea pero fácil de olvidar (porque aparentemente ninguna otra prueba de unidad en el mundo devuelve nada más que vacío) y lo envía por el agujero de la reparación de su unidad pruebe la configuración cuando no haya un problema de configuración real. Realmente deseo que esto solo haya causado un compilador o, al menos, arroje un error de tiempo de ejecución.
pat8719
2
@ pat8719, parece una buena idea para un analizador de código. No son demasiado difíciles de escribir. Acabo de escribir un hecho de xunit async void Foo()y sus analizadores no se quejaron, pero ciertamente podrían agregar uno que sí lo haría. cc: @bradwilson
benmccallum
22

Compruebe en qué marco están escritas las pruebas (por ejemplo, nunit, xunit, prueba VS, etc.) y asegúrese de tener instalado el adaptador de prueba / extensión de corredor correcta.

Para mí, faltaba el adaptador de prueba NUnit 3 y confirme el número de versión requerido mirando la versión de dependencia nunit.framework (seleccione el .dll en el árbol de dependencias en el Explorador de soluciones y presione F4 para abrir la ventana Propiedades).

benmccallum
fuente
2
Nota personal: Mi proyecto de MSTest original ref'd Microsoft.VisualStudio.QualityTools.UnitTestFramework(no estoy seguro de qué versión). Se resolvieron problemas donde el método no se ejecuta (o se encuentra) al eliminar esa referencia e instalar el último (v2.1.0) MSTest.TestAdapter (y Framework)
Adam Cox
@AdamCox ¿Está en Microsoft.VisualStudio.TestTools.UnitTestingdesuso? Tuve algunas pruebas con esto que de repente dejaron de ejecutarse como se mencionó anteriormente después de volver a agregar algunas referencias a un proyecto del que dependían.
ebyrob
@ebyrob, la respuesta de Athanasios a continuación podría ser relevante. Parece que no solo tuvo que actualizar / actualizar a los paquetes MSTest. *, Sino que también agregó algunas dependencias y reparó algunos redireccionamientos vinculantes. Verifique su salida de advertencias.
benmccallum
16

TLDR: actualice los paquetes de prueba, mire la salida -> consola de prueba

Luché con esto por un día y medio. así que esto es lo que hice para resolverlo:

Síntomas

  1. 5 proyectos de prueba de unidad, todos descubribles en TestExplorer
  2. 2 de cada 5 ejecutados correctamente
  3. 3 indicando que no se ejecuta en absoluto
  4. El problema comenzó después de una actualización de .NET Framework

Investigación

Como todos los paquetes se actualizaron durante la actualización de .net framework, comencé con las diferencias entre los proyectos workin y no work. La primera pista fue que los 3 proyectos estaban usando: MSTest.TestAdapter y MSTest.TestFramework

Naturalmente, fui a - - Consola de salida -> Prueba desplegable en VS 2019 y miré la salida. Nada útil allí.

Paso uno de la solución : actualice MSTest.TestAdapter y MSTest.TestFramework a la versión 2.0.0

Paso dos de la solución : ahora la consola de salida -> La salida desplegable de prueba comenzó a mostrar uno tras otro, paquetes faltantes y redireccionamientos de enlace incorrectos

Paso tres de la solución : agregue manualmente los paquetes que faltan. Para mí esos fueron

  1. System.Runtime.Extentions
  2. Reflexión del sistema
  3. Tal vez un poco más que me estoy perdiendo

Paso 4 de la solución : se eliminaron / repararon los redireccionamientos de enlaces no deseados.

Espero que esto ayude a alguien más.

Athanasios Kataras
fuente
¡Me salvaste ese día y medio! Actualicé un proyecto de versión 4.5 FW e intenté eliminar todas las cosas innecesarias de los paquetes y terminé en esta situación. ¡Gracias!
Numan
Creo que estaba experimentando algo similar. Finalmente, acabo de volver a crear el proyecto desde cero. Aparentemente hay una línea en el archivo * .csproj que establece ToolsVersiony golpear la mía lo estropeó todo. Todo lo que puedo decir es "cuidado con el comprador" para las pruebas de unidades de MS y estar listo para reemplazar sus archivos * .csproj en cualquier momento, estas cosas están estrechamente integradas y dependen mucho de la versión.
ebyrob
Gracias, aunque no es mi problema directamente, la sugerencia para verificar el resultado de la consola me mostró el error (el método DBContext Dispose tenía un error) que impedía la ejecución de mis pruebas.
Iain Carlin
14

Clean-Rebuild La solución funcionó para mí.

Eugene Ihnatsyeu
fuente
11

Tuve el mismo problema después de una instalación limpia de VS 2019. Se encontraron pruebas pero no se ejecutaron con "Se produjo un error inesperado". Se solucionó configurando x64 en lugar de x86, que se seleccionó de forma predeterminada.

ingrese la descripción de la imagen aquí

Vadim Leb
fuente
44
Esta fue la solución para mí, junto con reiniciar VS y eliminar la carpeta .vs. Gracias.
Donald.Record
No puedo creer que esto siga siendo un problema ... Ojalá, Microsoft haya emitido algún tipo de advertencia para ese inconveniente clásico en algún momento.
Guillaume LaHaye
10

Descubrí que en el proyecto no hacía referencia al ensamblado Microsoft.VisualStudio.QualityTools.UnitTestFramework . En su lugar, hacía referencia a Microsoft.VisualStudio.TestPlatform.TestFramework y Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions . Cuando eliminé esas dos referencias y agregué la referencia al ensamblaje Microsoft.VisualStudio.QualityTools.UnitTestFramework , las pruebas que anteriormente estaban marcadas con el signo de exclamación azul de repente se activaron y comenzaron a funcionar.

Las pruebas unitarias no se ejecutan con un ensamblaje incorrecto

Con el ensamblaje correcto, las pruebas se ejecutan

markdotnet
fuente
3
Después de cambiar de .NET Framework 4.6.2 a .NET Framework 4.7.2, mis pruebas ya no se ejecutaban. Después de horas de intentarlo, solo esta solución funcionó para mí.
Éric Bergeron
Después de cambiar de .NET Framework 4.6.2 a .NET Framework 4.7.2 - Tuve que eliminar todas las redirecciones de enlace en app.config
bkwdesign hace
10

Tuve este problema y para mí fue causado por tener múltiples proyectos de prueba con diferentes versiones de:

  • MSTest.TestAdapter
  • MSTest.TestFramework

La consolidación de los paquetes nuget para los proyectos para que fueran los mismos resolvió el problema para mí.

Jon Ryan
fuente
1
Esta respuesta me ayudó a encontrar una causa similar. En mi caso, algunos proyectos de prueba tenían referencias a Microsoft.VisualStudio.TestPlatform.TestFramework (y no se ejecutaron) mientras que otros tenían referencias a Microsoft.VisualStudio.QualaityTools.UnitTestFramework (que eran los proyectos que se ejecutarían).
Jr
8

En mi caso, fue porque un proyecto de prueba en mi solución tenía los paquetes nuget MSTest.TestFramework y MSTest.TestAdapter instalados, pero los otros no. Aparentemente, estos paquetes no tenían que ejecutar pruebas hasta que un proyecto de la solución los tuviera instalados.

El problema se solucionó instalando esos paquetes en proyectos de prueba que les faltan.

SteveC
fuente
En mi caso, es exactamente lo contrario: cualquier proyecto de prueba unitaria que tenga los paquetes nuget de MSTest no se ejecutará, como lo hacen los demás. Extraño.
Palle Due
Resuelto : tengo un archivo .testsettings. Los paquetes MSTest requieren un archivo .runsettings. Es por eso que las pruebas no se están ejecutando.
Palle Due
7

Lo que me solucionó fue actualizar los paquetes nuget de MS.Test

usuario2945722
fuente
7

Instalar Nunit3TestAdapterNuget ha resuelto este problema

AvishalomJan
fuente
¡Esto solucionó mi problema también! :)
Eru
6

ingrese la descripción de la imagen aquí

¡Establecer la arquitectura del procesador para proyectos AnyCPU en Test Explorer solucionó mi problema! Ver captura de pantalla arriba.

NetProvoke
fuente
¡Muchas gracias! Me ayudó =)
Alexander Brattsev
4

En mi caso, tenía un async voidMétodo y lo reemplacé async Task, por lo que la prueba se ejecutó como esperaba:

    [TestMethod]
    public async  void SendTest(){}

reemplazar con :

    [TestMethod]
    public async  Task SendTest(){}
Ali
fuente
1
Este fue mi problema
Kyle Delaney
3

Tuve los mismos síntomas.

Asegúrese de tener instalada la extensión adecuada de Visual Studio a través de Herramientas - Extensiones y actualizaciones. En mi caso, tuve que instalar XUnit y Specflow desde la opción Online.

Luego limpie la solución y reconstruya.

Si eso todavía no ayuda, borre su directorio temporal (busque% temp% en la búsqueda del menú Inicio y elimine todo el contenido en Temp)

Y finalmente intente desinstalar Resharper que finalmente solucionó mi problema.

Gina
fuente
44
Desinstalar Resharper ?! No creo que esta sea una solución ^^
Steve Rakebrandt
2

Aquí fue que el proyecto de prueba no fue marcado para ser construido:

Compilación -> Administrador de configuración ... -> compruebe compilación para su proyecto de prueba

CountOren
fuente
2

Desde que llegué aquí con este tipo de error, publico mi problema / solución:

Síntomas

  • No se ejecutaron todas las pruebas, pero no dependieron por proyecto, solo algunas de ellas se ejecutaron.
  • Todos los ejecutados eran verdes.
  • Pila de tecnología: dotnet core / XUnit / FluentAssertions
  • Todas las pruebas detectadas y actualizadas si cambiaron.
  • Seleccionando o ejecutando "Pruebas no ejecutadas" varias veces podrían ejecutarse.

Problema:

Hubo un error en el código que arrojó una excepción dentro de otro hilo. Todas las aserciones de prueba pasaron pero canceló la ejecución de la prueba. Pude ver el error en la "Salida de pruebas" (NullException).

OriolBG
fuente
+1 Intenté depurar una prueba específica. Cuando finalmente ejecuté otra prueba más simple, pude depurar la prueba específica. Esta respuesta me hizo probar eso.
Halvard el
2

Tenía los mismos síntomas, en mi caso fue la versión del SDK core dotnet el problema.

Los proyectos apuntaban a 2.2 y fue capaz de construir usando 3.0. Después de instalar la versión 2.2 SDK más reciente, pudieron ejecutarse.

Kristoffer la Cour
fuente
2

Puede ver la salida de error de su corredor de prueba abriendo el panel Salida (ver -> salida) y seleccionando "pruebas" en el menú desplegable "Mostrar salida desde"

mostrar salida de


Además, si tiene instalado Resharper , puede abrir un archivo de prueba y colocar el cursor sobre el círculo de prueba junto a una prueba para obtener información adicional sobre errores

Salida de reafilador

Al hacer clic en eso, aparecerá una ventana con información más detallada. Alternativamente, puede abrir esa ventana yendo a Extensiones -> Reformar -> Windows -> Resultados de exploración de prueba unitaria

Exploración de prueba de unidad de reafilador

BlueRaja - Danny Pflughoeft
fuente
2

He probado muchas opciones con Visual Studio 2019 Versión 16.4.6 y Microsoft.VisualStudio.TestTools.UnitTesting, pero por ahora, la única forma de ejecutar las pruebas con éxito fue invocando el siguiente comando en la consola

dotnet test

Las pruebas se descubren en Test Explorer pero el resultado es "No se ejecuta".

Actualizar Visual Studio no ayudó.

Han resuelto el problema con "Ninguna prueba coincide con el filtro de caso de prueba FullyQualifiedName" ejecutando actualizaciones a la última versión para los siguientes paquetes:

Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework
volody
fuente
1

Para mí, la solución fue cambiar la configuración de Prueba de unidad de Resharper "Arquitectura de plataforma predeterminada" a "x64"

ingrese la descripción de la imagen aquí

Sastre Dharmesh
fuente
Esto resolvió mi problema con un proyecto .NET Core 3.1 que se negaba a ejecutar pruebas en Test Explorer. Nada más lo arreglaría excepto esto.
J_L
1

Para mí, reiniciar VS2017 no funcionó. Tuve que limpiar sln y luego encontré un archivo con pruebas que no se ejecutaron y solo ejecutaron ese archivo. Después de eso, corrí todo y funcionó normal otra vez.

Rayo
fuente
1

Tenía una versión diferente de los paquetes nuget NUnit (3.11.0) y NunitTestAdapter (3.12.0). Cuando actualicé NUnit a 3.12.0, Visual Studio ejecutó pruebas.

Krzysztof Madej
fuente
1

En mi caso, funcionó para actualizar los paquetes nuget de MSTest. Podría reproducir este problema incluso en un proyecto MSTest en blanco y la actualización de los paquetes funcionó.

CodingYourLife
fuente
1

Para mí, tener una propiedad llamada TestContext en una clase base estaba causando este comportamiento. Por ejemplo:

[TestClass]
public abstract class TestClassBase
{
    protected object TestContext { get; private set; }
}

[TestClass]
public class TestClass : TestClassBase
{
    // This method not found
    [TestMethod]
    public void TestCase() {}
}
Uni
fuente
1

Puedo decir por tus atributos que estás usando MSTest. Tuve un problema similar: mis pruebas aparecían en el Explorador de pruebas, pero cuando intentaba ejecutarlas (ya sea eligiendo Ejecutar todo o seleccionándolas individualmente) no lo harían.

Mi problema fue que había creado el proyecto de prueba de unidad manualmente desde un proyecto de biblioteca de clases estándar .NET vacío. Había instalado el MSTest.TestFrameworkpaquete NuGet, pero no el MSTest.TestAdapterpaquete. Tan pronto como instalé el paquete del adaptador, se ejecutaron como se esperaba.

Parece obvio en retrospectiva, pero cuando crea proyectos de prueba unitaria a partir de una plantilla, da estas cosas por sentado.

bobm
fuente
1

Vale la pena mencionar que a veces los archivos de NUnit Test Adapter se corrompen en la carpeta de usuario C: \ Users [Usuario] \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \ NUnit3TestAdapter.3.8.0 / build / net35 / NUnit3.TestAdapter.dll en Windows 10 y eso hace que Test Explorer deje de funcionar como debería.

Tomasz Kosiński
fuente
1

Yo uso VS2019 con .Net 4.7. Instalé la extensión NUnit v3 y cambié la configuración de Prueba para usar X64. Mi proyecto de prueba de unidad es Cualquier CPU (funcionaría si lo cambiara a x64). Ahora puedo depurar mi código.

Rez.Net
fuente
1

Este problema también se observa cuando el método de prueba que se ejecuta arroja una excepción StackOverflowException , lo que hace que el corredor de prueba anule la ejecución de la prueba, lo que da como resultado la salida 0 tests run.

Para encontrar al culpable y resolverlo puso un punto de quiebre en el inicio de ambos TestInitialize y TestMethod decorada métodos, ejecute la prueba de la unidad en modo de depuración, pasando por encima de proceder (F10) hasta que se produce la excepción.

Thomas CG de Vilhena
fuente