visual studio 2010 - unitarias - ¿Cómo ejecutar TODAS las pruebas en mi solución usando la línea de comandos MSTest.exe?
unit test c# visual studio 2017 (4)
Es posible que desee echar un vistazo al Gallio.Echo prueba Gallio.Echo que viene con la plataforma de automatización de prueba Gallio . Es un paquete gratuito (OSS) con muchas herramientas de informes y corredores de prueba convenientes y que es compatible con la mayoría de los marcos de prueba existentes (MbUnit, NUnit, MSTest, xUnit, etc.)
Más específicamente, Gallio.Echo es un versátil corredor de prueba de línea de comando. Puede especificar una lista de conjuntos de prueba, varios filtros y muchas opciones adicionales. Gallio consolida los resultados de la prueba en un solo informe (Xml, Html, Zip, etc.)
De acuerdo con MSDN here y discutido here , podemos usar MSTest.exe
para ejecutar pruebas desde la línea de comandos, lo cual es mucho más rápido que ejecutarlo dentro del IDE (especialmente lento si está trabajando en una solución grande como yo).
Mi pregunta es ¿cómo puedo usar MSTest.exe
para ejecutar todas las pruebas en mi solución ? El comando solo tiene la opción /test
para filtrar las pruebas en un ensamblaje especificado en la opción /container
. Solo puedo pensar en llamar este comando N veces, dado que puedo tener todo el ensamblaje de prueba N en mi solución (!?) Además, los resultados después de la ejecución son conceptos básicos por ensamblado, por lo que no es fácil obtener las pruebas fallidas / pasado.
Si conoces una mejor manera, ¡por favor comparte! ¡Gracias!
Lo logré usando el argumento testmetadata
y apuntándolo a mi archivo .vsmdi.
Como se explica here .
P.ej:
mstest /testmetadata:mySolution.vsmdi
Sin embargo, tenga en cuenta que los testmetadata
pueden ser más frágiles (p. Ej. , Listas de prueba vacías combinadas con el atributo Ignorar porque "El reparto especificado no es válido" ). Crear un lote con todas las DLL que contienen clases de prueba podría ser una alternativa más confiable.
Necesitaba lo mismo, sin querer instalar nada o generar archivos vsmdi
, así que se me ocurrió este script de PowerShell
continuación. Ejecuta TODAS las pruebas en un comando en una carpeta y son subcarpetas (no solución , pero está bien para mí).
Siéntase libre de sugerir cómo hacer que este script sea más elegante:
$x = ""; dir */bin/*test*.dll -Recurse | foreach { $x += "/testcontainer:""$_"" " }; iex "mstest $x"
Instrucciones:
Agregue la ruta a
mstest.exe
través deEnvironment variables
variables deEnvironment variables
PATH
, de lo contrario simplemente reemplacemstest
con su ruta completa en el script dePowerShell
anterior.- Abre
PowerShell
, pega el comando. - Modifique
*/bin/*test*.dll
para satisfacer sus necesidades. En la secuencia de comandos actual obtendrá todas lasDLLs
en la carpetabin
recursivamente, que contiene la subcadena "prueba" en el nombre del archivo. - ¡Ejecuta el comando!
Solo usa:
mstest.exe /testcontainer:yourTests.dll /resultsfile:res.trx
y ejecutará todas las pruebas en ese ensamblado, y escupirá los resultados en el archivo especificado.