unit-testing - studio - xunit ignore test
¿Por qué el xUnit Runner no encuentra mis pruebas? (8)
Tengo una prueba xUnit.net de la siguiente manera:
static class MyTestClass
{
[Fact]
static void MyTestMethod()
{
}
}
El plugin xUnit para VS 2012 dice:
No se encontraron pruebas para ejecutar.
TestDriven.net funciona bien, pero menciona algo acerca de Ad hoc :
1 aprobado, 0 fallado, 0 omitido (ver ''Lista de tareas''), tomó 0.47 segundos (Ad hoc)
TeamCity, xunit.gui.exe
y xunit.console.exe
y Visual Studio tampoco pueden encontrar TestMethod
(Tengo xunit.runner.visualstudio
instalado y VS está viendo algunas pruebas).
¿Lo que da?
(Tal como lo menciona @Kyle en los comentarios de la otra respuesta) El mismo mensaje No tests found to run
mensaje puede resultar del uso de NuGet para obtener xUnit.dll y terminar con la versión 2.0.0 (que actualmente está marcada como presentación preliminar como algunas la funcionalidad central, como el descubrimiento de las pruebas v1, etc. aún no se ha implementado en esa rama).
La resolución en este caso es seleccionar versiones Stable Only (en lugar de Include Prerelease ) en el administrador de paquetes NuGet.
Desde http://xunit.github.io/docs/getting-started-desktop.html#run-tests-visualstudio :
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).
En mi caso, para ver cualquier prueba, tuve que completar los siguientes pasos:
(Todo instalado a través del Administrador de paquetes NuGet)
- Instalar
xUnit
v2.0.50727 - Instalar
xUnit.extensions
v2.0.50727 - Navegue al siguiente enlace y siga los pasos descritos en la documentación: http://xunit.github.io/docs/running-tests-in-vs.html
Estoy usando Visual Studio 2013 Premium. (Resharper NO instalado)
Esta respuesta es para VS 2013, pero los pasos son esencialmente los mismos para VS 2012. Esto se aplica para ejecutar a través de la funcionalidad de prueba unitaria de ReSharper .
Instale el corredor xUnit.net para Visual Studio 2013 (tenga cuidado al ejecutar Visual Studio como administrador, o las pruebas pueden no ejecutarse cuando se ejecuta el IDE como no administrador):
a. Desde Visual Studio 2013, vaya a Herramientas -> Extensiones y actualizaciones -> En línea
segundo. Buscar el corredor de xUnit.net para Visual Studio 2012 y 2013
do. Luego, descárguelo (instálelo). Si se actualiza a VS 2013 desde VS 2012, se sugiere desinstalarlo y luego volver a instalarlo.
re. Reinicie Visual Studio.
Si ReSharper está instalado, instale el plugin xUnit.net test runner:
a. En Visual Studio 2013, navegue: Resharper -> Extension Manager.
segundo. A la izquierda, selecciona en línea.
do. Busque "xunit.net". Seleccione el "Soporte de prueba de xUnit.net". Haga clic en Instalar.
re. Reinicie Visual Studio 2013.
"Limpia" la solución
a. En el IDE, en el Explorador de soluciones, haga clic con el botón derecho en la solución y elija "Limpiar".
segundo. Re-compilar.
do. Ahora, al hacer clic con el botón derecho en un atributo
[Fact]
, seleccione "Pruebas de unidad de ejecución" de Resharper (en oposición a las "Pruebas de ejecución" predeterminadas)
Solución de problemas corriendo con XUnit:
Si persisten los problemas al ejecutar las pruebas [Fact] con XUnit, podría ser necesario eliminar manualmente el paquete xUnit de cualquiera / todas las siguientes carpetas (revisar el contenido de las DLL de xunit, luego eliminar la carpeta xUnit si se encuentra):
C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/Extensions/
C:/Users/<username>/AppData/Local/Microsoft/VisualStudio/12.0/Extensions/
En cuanto a ReSharper, intente desinstalar y volver a instalar la biblioteca xunitcontrib (soporte de prueba xUnit.net). Me he dado cuenta una vez que desinstalo, algunos mensajes de error parpadean. Agarré una captura de pantalla en un punto y enumeré:
- Se
C:/Users/<username>/AppData/Local/JetBrains/ReSharper/vAny/packages/xunitcontrib.1.3.0/ReSharper/v8.1/plugins/xunit.dll
acceso a la rutaC:/Users/<username>/AppData/Local/JetBrains/ReSharper/vAny/packages/xunitcontrib.1.3.0/ReSharper/v8.1/plugins/xunit.dll
. - ... y lo mismo para las otras DLL en ese directorio
Para resolver esto, elimine el directorio
C:/Users/<username>/AppData/Local/JetBrains/ReSharper/vAny/packages/xunitcontrib.1.3.0/
después de desinstalar de Visual Studio, luego ejecute Visual Studio como no administrador, y vuelva a instalar a través de ReSharper (Resharper -> Extension Manager)- Se
He estado teniendo este problema con .NET Core por un tiempo ahora donde una clase de prueba o un método de prueba no se está descubriendo. La siguiente solución funciona para mí:
- Abra una ventana de símbolo del sistema.
- Cambiar al directorio del proyecto.
Construya el proyecto ejecutando el siguiente comando:
dotnet build
NOTA: ¡Crear desde Visual Studio.NET no funcionará! <<<<<<<<<<< ¡IMPORTANTE!
- Ejecute las pruebas: Prueba -> Ejecutar -> Probar todo - CTRL + R + A (esto descubrirá la (s) nueva (s) prueba (s) - pero no ejecutará la (s) nueva (s) prueba (s).
- Ejecuta las pruebas nuevamente.
Para mí, la combinación de mi clase de prueba y los nombres de los métodos de prueba eran demasiado largos; xUnit parece tener un límite en esta combinación.
Acortar el nombre del solo método de prueba permitió que xUnit descubriera esa única prueba. Acortar el nombre de toda la clase permitió a xUnit descubrir todas las pruebas en la clase.
El umbral del nombre de clase + nombre del método parece ser de 172 caracteres.
TL; DR sus clases de prueba deben ser public
(pero sus métodos de prueba pueden ser private
y / o static
)
Por razones de eficiencia, los autores de xUnit han optado por no usar BindingFlags.NonPublic
cuando buscan Clases de prueba en el corredor (las tablas de metadatos MSIL no indexan private
clases private
(/ internal
) en el mismo grado, por lo que existe una diferencia de rendimiento significativa en la eficiencia relativa que la Reflexión puede lograr).
Como resultado de lo anterior, el hecho de que su class
sea private
significa que no se recogerá.
El hecho de que el Método de prueba sea private
y static
está bien: xUnit por diseño, ya que 1.0 ha sido compatible con ambos aspectos.
Tenga en cuenta que la extensión de Visual Studio xUnit Runner, xunit.console.exe
(y la GUI), la tarea xunit
MSBuild, Resharper y CodeRush son consistentes para cumplir esto (aunque podría decirse que [especialmente los dos últimos] podrían hacer más para marcar cuando una clase de prueba (es decir, clase [potencialmente indirecta] que contiene anotaciones de origen) es private
).
La razón por la cual TestDriven.net ejecuta su prueba es porque el autor de TestDriven.net ha hecho un gran esfuerzo para que sea Just Work. Internamente utiliza una envoltura / corrector especial Test Runner (denominado Adhoc Runner) para ejecutar su prueba. Tenga en cuenta que el método en realidad no se está ejecutando a través del corredor xUnit.net y, por lo tanto, no se activarán los atributos que ponga en la prueba que tengan efectos secundarios.
Cabe destacar que NUnit (y estoy bastante seguro de que MSTest) utiliza la reflexión privada [y, por lo tanto, retoma las pruebas en clases private
], que es probablemente la razón por la que nunca antes pareció importante preocuparse por ello.
Nota: Un truco / efecto secundario habilitado por esto es que puede hacer que una Clase de prueba sea private
como una forma rápida de Skip
todas las pruebas en una Clase de prueba [y cualquier clase anidada]. (Tristemente, los casos en este planeta de este uso involuntariamente superan ampliamente en número a los casos intencionales de esto!)
Tuve el mismo problema en VS2017 RC, .NET core 1.1 project. La actualización de xunit.runner funcionó para mí,
Install-Package xunit.runner.visualstudio