2010-10-18 17 views
37

Según MSDN here y analizamos 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).¿Cómo ejecutar TODAS las pruebas en mi solución usando la línea de comandos MSTest.exe?

Mi pregunta es ¿cómo puedo usar MSTest.exe para funcionar todos 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 conoce una manera mejor, ¡por favor comparta! ¡Gracias!

+0

También podría usar ILMerge para fusionar los ensamblajes antes de ejecutar sus pruebas. – Marco

Respuesta

5

Es posible que desee echar un vistazo al Gallio.Echo banco de pruebas que viene con la plataforma de automatización de pruebas Gallio. Es un paquete gratuito (OSS) con muchas herramientas de información conveniente y corredores de prueba y que soporta la mayoría de los marcos de prueba existentes (MbUnit, NUnit, MSTest, xUnit, etc.)

alt text

Más específicamente, Gallio.Echo es una 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 las pruebas en un solo informe (XML, HTML, código postal, etc.)

-3

sólo tiene que utilizar:

mstest.exe /testcontainer:yourTests.dll /resultsfile:res.trx 

y se ejecutará todas las pruebas en esa asamblea, escupiendo los resultados en el archivo especificado.

+6

La pregunta era acerca de ejecutar todas las pruebas, como vs hace cuando hace clic en Ejecutar> Todas las pruebas en la solución – alga

13

Lo logré usando el argumento testmetadata y apuntándolo a mi archivo .vsmdi.

Como se explicó here.

ej .:

mstest /testmetadata:mySolution.vsmdi 

Sin embargo tenga en cuenta que testmetadata puede ser más frágiles (por ejemplo empty test lists combined with the Ignore attribute cause "Specified cast is not valid"). Crear un lote con todas las DLL que contienen clases de prueba podría ser una alternativa más confiable.

+0

Hola. El editor de prueba está en desuso en VS2015. ¿Sabes cómo puedo migrar la lista a la nueva funcionalidad de listas de reproducción en VS2015 ?. Gracias por adelantado. – mggSoft

6

Necesitaba lo mismo, sin querer instalar nada o generar archivos vsmdi, así que se me ocurrió esta secuencia de comandos PowerShell, a continuación. Se ejecuta TODAS pruebas en uno comando en una carpeta y es subcarpetas (no solución, pero está bien para mí).

Siéntase libre de sugerir cómo hacer este guión más elegante:

$x = ""; dir *\bin\*test*.dll -Recurse | foreach { $x += "/testcontainer:""$_"" " }; iex "mstest $x" 

Instrucciones:

  • agregar la ruta al mstest.exe través Environment variables variables PATH, de lo contrario simplemente reemplazar mstest con su ruta completa en el script PowerShell anterior.

    enter image description here

  • abierto PowerShell, pegar el comando.
  • Modifique *\bin\*test*.dll para cubrir sus necesidades. En el script actual obtendrá todos DLLs en la carpeta bin recursivamente, que contiene la subcadena "prueba" en el nombre del archivo.
  • Ejecute el comando!
+0

Lo he modificado un poco para poder encontrar dll de prueba mejor: '$ x =" "; Get-ChildItem -path. -Recurse -Include * Test.dll | donde {$ _. FullName -match "bin"} | foreach {$ x + = "/ testcontainer:" "$ _" ""}; iex "mstest $ x" ' – engineforce

Cuestiones relacionadas