c# - test - Visual Studio 2013 no descubre pruebas unitarias
unit test c# (30)
Tengo una solución simple en visual studio 2013 que está compuesta por un proyecto web, un proyecto de biblioteca y un proyecto de prueba de unidad. Cuando abro la solución e intento ejecutar las pruebas unitarias, no son descubiertas por Visual Studio. Para ejecutar las pruebas, intento ir al menú y seleccionar Prueba -> Ejecutar -> Ejecutar todas las pruebas o abriendo la ventana del explorador de prueba. Por aquellos a los métodos, Visual Studio no descubre ninguna prueba en la solución.
Creando primero un proyecto de pruebas de unidad simple e intento ejecutar la prueba, visual studio descubre la prueba y puedo ejecutarla. Entonces, si abro mi solución anterior, Visual Studio ahora descubre todas las pruebas. Intento guardar mi solución pero al cerrarla y volver a abrirla, sin crear primero un proyecto de prueba de unidad, el estudio visual no encuentra las pruebas nuevamente. Este es un comportamiento muy extraño que no sé por qué sucede esto.
Solía trabajar solo en este proyecto que usaba el control de fuente git integrado con la fundación del equipo visual studio. El problema de Visual Studio no es que descubra que las pruebas unitarias comienzan cuando aparece un nuevo elemento en el proyecto y cuando necesito recrear la solución a través del control de fuente en línea. Antes de esto, todas las pruebas siempre han sido descubiertas por Visual Studio.
Para la creación, la unidad prueba que utilizo el dll Microsoft.VisualStudio.QualityTools.UnitTestFramework. Mi versión de Visual Studio es: Microsoft Visual Studio Express 2013 para la versión Web 12.0.30723.00 Actualización 3. Mi versión de .NET Framework es 4.5.50938.
Todas mis pruebas son así:
[TestClass]
public class Service1Test
{
[TestMethod]
public void Test1()
{
Assert.IsTrue(True);
}
}
Acabo de toparme con esto así como tampoco vi un caso similar que sea similar al mío.
En el archivo .csproj
de mi proyecto de prueba, la privacidad de referencia de NUnit se estableció en False
:
<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<HintPath>../packages/NUnit.2.6.4/lib/nunit.framework.dll</HintPath>
<Private>False</Private>
</Reference>
Después de configurar <Private>
en True
, funcionó.
Algunas cosas que he notado que tengo que hacer de vez en cuando para que las pruebas se muestren correctamente.
Si su solución está en una unidad protegida que necesita acceso de administrador para leer / escribir, a veces solo aparece una parte de las pruebas. Definitivamente ejecuta VS como administrador en ese caso.
Si su solución es de 64 bits, asegúrese de que Test> Test Settings> Default Processor Architecture esté configurado en x64. A veces se establece en x86. Configúralo a x64, luego reconstruye.
A veces, simplemente reiniciar Visual Studio hace el truco porque el explorador de prueba se iniciará de nuevo.
No te olvides de construir el proyecto / solución de prueba. (Si desea que se forme con el resto de los proyectos, haga clic con el botón derecho en su solución> Propiedades> Propiedades de configuración> Configuración> marque la casilla "Crear" para su proyecto de prueba)
Asegúrese de que las pruebas estén en una sección
public
de su clase de prueba
Asegúrese de que su clase de prueba sea public
para que pueda encontrarla. Y si hace referencia a otra clase, asegúrese de hacer lo mismo.
Además, a veces, si no tiene Asserts o no decora la prueba con un [TestMethod]
, es posible que no se reconozca una prueba.
2 cosas más: 1) Las pruebas de unidad de sincronización funcionan en el mejor de los casos, y en el peor de los casos. Eche un vistazo a este artículo de Stephen Cleary y quédese allí si le interesa.
2) Si usa NUnit y se encuentra con los mismos problemas, tenga en mente que es [TestCase]
para Nunit, en lugar de [TestMethod]
Habiendo dicho lo anterior, aquí hay un article que he publicado en el proyecto de código, con MSTest
y NUnit
, en caso de que quiera darle un giro y asegurarse de que no le falta nada.
Asegúrese de que todos sus proyectos estén ejecutándose con la misma configuración. Debajo de las propiedades de su proyecto => Depurar => Plataforma en la lista desplegable elija la plataforma adecuada (para mí fue "Cualquier CPU") como se determinó en sus otros proyectos.
Descubrí que los métodos de prueba unitarios marcados como async void
no son descubiertos por VS Test Explorer. Esto parece ser porque VS no tendría manera de esperar que finalice una prueba y decidir si tuvo éxito o no. Si necesita absolutamente tener un método de prueba para ejecutarse de forma asíncrona, haga que devuelva una tarea en su lugar, como una tarea async Task
. Descubrí que esto solucionó el problema para mí.
Después de pasar 2 días ... nada de lo anterior funcionó para mí. La única "solución" era: ir a las propiedades del proyecto -> pestaña de compilación. 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.
Digamos solo por el argumento de que necesita usar la arquitectura X64 en su proyecto de prueba para que las dependencias se construyan correctamente (como en mi caso). Es posible que deba modificar su Arquitectura de procesador predeterminada en el menú Probar - Probar configuración . Establecer esto en X64 permitió a mi explorador de pruebas encontrar mis pruebas usando Microsoft.VisualStudio.TestTools.UnitTesting.
Estaba enfrentando el mismo problema y recordé, una vez más (esta situación ocurrió antes), que funciona la selección de "Plataforma mixta" en el menú de la plataforma de soluciones, así como las otras respuestas.
Intente construir todos los proyectos como MSIL (Cualquier CPU) en lugar de x86 / x64. Funcionó para mí de forma extraña
Logré agregar el mío como
public static void TestMethod1(){}
empecé a trabajar una vez que eliminé la estática ...
Los usuarios de XUnit pueden notar que la ventana del Explorador de Pruebas ya no enumera ninguna prueba. Para hacer las pruebas detectables nuevamente, pruebe este consejo importante , que se resalta a continuación.
Si tiene problemas para descubrir o ejecutar pruebas, puede ser víctima de un caché de corredor corrupto dentro de Visual Studio. Para borrar este caché, cierre todas las instancias de Visual Studio y luego elimine la carpeta% TEMP% / VisualStudioTestExplorerExtensions. También asegúrese de que su proyecto esté vinculado a una sola versión del paquete NuGet del corredor de Visual Studio (xunit.runner.visualstudio).
Me encontré con el mismo problema. E investigó y descubrió que los dll no se construyeron y se colocaron en la carpeta correcta. tan pronto como cambié mi configuración aparecieron. - las opciones de compilación de Proyectos, ¿qué carpeta se debe usar? - la configuración de compilación de la entrada del menú de compilación, deben verificarse.
eso lo arregló para mí.
Mi problema fue porque el método de prueba de mi unidad no era nulo y recibía parámetros.
Para Visual Studio 2013.5, fue útil limpiar el directorio / TestResults en la solución. Visual Studio corrompió el archivo mdf en el que almacena las pruebas descubiertas, evitando así el descubrimiento de pruebas unitarias.
Para futuros googlers tuve un raro escenario que causó esto.
En mi clase de prueba base tenía una propiedad llamada TestContext. Esto interfirió con la propiedad TestContext reservada de MSTest, lo que provocó que todas mis pruebas se ocultaran de VS / Resharper, excepto una (que no heredó de la base).
Para obtener pruebas para mostrar en la ventana del Explorador de pruebas, tuve que instalar NUnit3 Test Adapter 3.0, que no estaba disponible en Package Manager.
Descargado de https://visualstudiogallery.msdn.microsoft.com/0da0f6bd-9bb6-4ae3-87a8-537788622f2d
Perdón por agregar a la lista larga, pero tuve un problema completamente diferente. Primero, me gustaría mencionar que descubrí mi problema al hacer clic en ''Ejecutar todo'' en el Explorador de prueba y luego mirar la ventana de salida de compilación en Visual Studio. Tienes que mirarlo activamente, ya que luego el mensaje desaparece.
En cuanto al problema, parece que durante la exploración de las pruebas, la DLL se carga y sus tipos de prueba se enumeran. Esto ocasiona que se carguen las referencias y si se produce alguna falla durante este proceso, las pruebas no se mostrarán en el explorador. Tuve dos problemas que impedían que la DLL de prueba se cargara correctamente:
- Todavía quedaba un redireccionamiento vinculante en el archivo de configuración (redireccionando a una versión de la versión inferior de NHiberate a la que se hacía referencia en el proyecto de prueba).
- Una referencia de ensamblado en conflicto (referencias de segundo nivel que no pueden cargarse). AsmSpy es por cierto una gran herramienta para buscar estos.
Si bien la solución de AndyG funciona, una solución más duradera podría ser establecer la variable de entorno PreferredToolArchitecture en "x64", ya sea por:
Cómo hacer que Visual Studio use la herramienta nativa amd64
o por:
- Panel de control | Sistema y seguridad | Sistema | Configuración avanzada del sistema | Variables de entorno
- PreferredToolArchitecture = x64
- DefaultToolArchitecture = Native64Bit
- PROCESSOR_ARCHITECTURE = x64
- ProcessorArchitecture = x64
Si carga una solución de Visual Studio (Comunidad VS 2015 en mi caso) desde un recurso compartido de red o el directorio Mis documentos que es parte de un recurso compartido , se mete en este problema. Lo resolví moviendo la solución y sus proyectos subyacentes a una carpeta local.
Si usa NUnit, asegúrese de descargar NUnit Adapter primero.
Vaya a Herramientas → Extensiones y actualizaciones ... → En línea → busque "Adaptador de prueba NUnit".
Solo necesita instalar este paquete:
NUnit TestAdapter
Tenía el mismo problema; las pruebas de repente dejaron de ser descubiertas.
Nunit Test Adapter se ha desactivado de alguna manera. Al hacer clic en Habilitar en el administrador de extensiones se corrigió por mí.
Tengo este problema de vez en cuando. Lo que funciona para mí es cerrar Visual Studio y ir a la carpeta:
%LocalAppData%/Microsoft/VisualStudio/12.0/ComponentModelCache
y eliminarlo contenido.
Una vez que abra Visual Studio y vuelva a cargar su proyecto, Test Explorer debería contener sus pruebas.
Tuve el mismo problema hasta que me di cuenta de que cometí un error de cortar / pegar y de haber dejado [Test Method]
antes de la prueba.
Tuve el mismo problema, pero ninguna de las otras soluciones funcionó. Resulta que estaba usando el marco NUnit 3 con el adaptador 2.
Si está utilizando NUnit 3, vaya a Extensiones y actualizaciones e instale el Adaptador de prueba NUnit3.
Tuve exactamente el mismo problema.
Fue debido a una versión incompatible de NUnit que agregué a mi proyecto (3.2.0) y al Adaptador de prueba que tenía instalado (2.0.0).
Para solucionarlo, use "Herramientas> Extensiones y actualizaciones" y busque NUnit3 Test Adapter, descubrió mis pruebas después de eso.
Aclamaciones
vaya al menú del proyecto> Configuration Manager verifique que la plataforma de su proyecto de prueba coincida con el resto del proyecto y que se verifique para compilar y luego reconstruir.
- Sé que las pruebas de la unidad no se encuentran si la solución no está construida, entonces eso es algo que se debe intentar (crear la solución), pero esa solución es como que el servicio de ayuda le pregunte si su computadora está enchufada ...
- Después de una reconstrucción limpia no solucionó el problema, ejecutar una compilación completa lo solucionó.