2010-01-13 17 views
14

¿Existe una API para ejecutar Visual Studio Unit Tests programmatically?¿Existe una API para ejecutar Pruebas unitarias de Visual Studio mediante programación?

La ejecución de MSTests.exe con Process.Start() no funciona en el escenario actual. Lo que estoy buscando es algo así como el NUnit SimpleTestRunner.

¿Alguna idea?

/Erik

+3

Duplicar http://stackoverflow.com/questions/1564681/running-vsts-tests-without-mstest-exe –

+0

Esta ha sido una molestia para mí también, así que la levantó como solicitud de 'usuario de voz'. Si estás leyendo esto, y sientes con fuerza, ¿puedes votar por ello? https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/4619858-mstest-api –

Respuesta

10

Estás en lo cierto, ya que no hay una API pública para el marco mstest. Escribí un reemplazo manual para mstest un día para ver qué tan difícil era, y no es tan simple como parece (especialmente si desea aprovechar más de un núcleo de CPU), así que tenga cuidado de seguir por este camino.

Personalmente siempre acabo de ejecutar mstest.exe programáticamente y luego analicé el archivo resultante .trx XML. ¿Hay alguna razón particular por la que no puede usar Process.Start para ejecutarlo?

P.S. Algunos del extraño comportamiento de MSTest.exe se resuelven si se pasa el parámetro de línea de comandos /noisolation - dar que un ir si se siente tan inclinado :-)


Actualización: Erik menciona que quiere ejecutar la API de prueba en el hilo actual para que pueda establecer la cultura del hilo para los problemas de globalización.

Si ejecuta una prueba unitaria debajo del depurador, notará que mstest crea un grupo de subprocesos y ejecuta todas las pruebas en diferentes subprocesos, por lo que es probable que esto no funcione incluso si pudiera acceder a la API .

Lo que me propongo hacer es lo siguiente:

  1. Desde su prueba de aplicación "corredor", establecer una variable de entorno
  2. Run mstest apuntando a las pruebas específicas
  3. Añadir un [ClassInitialize] (o [TestInitialize]) método que lee esta variable de entorno y establece la cultura
  4. ¡Ganancia!
+0

Necesito ejecutar mstest en el hilo actual para poder establecer la cultura en la que se ejecutan las pruebas. Tenemos un código sensible a la cultura que queremos ejecutar en múltiples culturas. ¿Qué tipo de comportamiento extraño se resuelve con/noisolation? –

+0

si no establece/no aislamiento, mstest crea una gran cantidad de subprocesos y aplicaciones adicionales y cosas. Esto hace que fallen las herramientas de cobertura de código como ncover y partcover. –

+0

¡Gracias por la información! Siempre es bueno tener una comprensión más profunda de las herramientas que usa. Su solución para el asunto de la cultura es más o menos lo que terminamos implementando, ya que no pudimos hacerlo funcionar en el hilo actual. Sin embargo, sería bueno no tener que depender de un mecanismo de señalización externo. –

0

Por qué no usar el reflector y ver cómo NUnit SimpleTestRunner está ejecutando las pruebas ... Y a continuación, utilizar esta técnica ...

+0

La excavación con Reflector es una gran idea. Sin embargo, NUnit SimpleTestRunner utiliza la API del corredor de prueba NUnit, que cualquiera puede usar. El problema es que VSTest no parece tener una API correspondiente. –

3

Después de tomar una inmersión profunda con reflector en MSTest.exe y más abajo en la pila de pruebas de Visual Studio Unit, encontré que la API utilizada por MSTest está sellada y privada, por lo que no puedo usarla desde el exterior.

0

Puede utilizar la API de REST de Microsoft para que TFS pueda ejecutar pruebas de ms. Consulte la documentación here.

He vinculado a "Call a Rest API" para que pueda ver cómo llamar a una de las API REST para TFS.

Tenga en cuenta que si sus pruebas están vinculadas a la compilación, deberían ejecutarse automáticamente cada vez que se ponga en cola una compilación.

Aquí está el enlace al Run Functional Tests.

También descubrí un artículo sobre el uso de la API TFS SDK para ejecutar pruebas. Aquí es que enlazan así: Link to API Article

Cuestiones relacionadas