Si vale, de acuerdo,el entorno de pruebas unitarias de Visual Studio Team System, no fue el primero, ni el único, ni quizá sea el más rápido ejecutando, aparte de todo el código existente que ya tengáis con Nunit o MbUnit por ejemplo.
Y esto es un poco problema a la hora de integrarlo todo con Visual Studio Team System, tener que ejecutar las pruebas desde otro entorno (bueno, para esto también hay otras soluciones), integrarlo con las Team Builds y publicar los resultados al Team Foundation Server, en fin, cosas que con la ejecución de test unitarios desde VSTS queda resuelta.
Bueno, una de las novedades de VSTS2010 trata sobre esto, y es la apertura a la integración de frameworks de pruebas unitarias de terceros. Esto es, poder ejecutar pruebas unitarias de VSTS, NUnit, MbUnit, y cualquier otro framework que se quiera aprovechar de esto, dentro del propio entorno de VSTS, y publicando resultados al TFS.
¿Suena bien verdad?. Vamos a ver un pequeño ejemplo, por ahora, el único framework, que yo conozca, que está preparado para esto es Gallio/MbUnit en su versión 3.1.313: http://www.gallio.org/Downloads.aspx
Simplemente nos descargamos el framework de Gallio y nos lo instalamos.
A la hora de crear, lo podemos crear o bien del tipo habitual de pruebas de VSTS, o bien un proyecto de pruebas del framework Gallio, da igual, y esta es una de las ventajas, podemos crear un proyecto de pruebas de VSTS, y agregarle tanto pruebas de VSTS, como de Gallio, y todas se ejecutarán mediante VSTS.
Para mezclar pruebas, vamos a crear un proyecto de pruebas de VSTS, ya sabéis, nuevo proyecto, en lenguaje el que queráis, en las plantillas de tipo
En la propia plantilla nos crea un método de pruebas, bueno, tampoco quiero enseñar aquí a hacer pruebas unitarias 🙂 así que simplemente dejad la prueba de ejemplo, y le ponemos simplemente un Assert.IsTrue(true) … ¿qué buen modo de hacer funcionar una prueba eh?
La ejecutamos, y bueno, lo esperado, se ejecuta y funciona todo ok.
Vale, ahora vamos a crear, dentro de este mismo proyecto, una clase vacía, y agregamos al proyecto, una referencia de .NET al Framework de Gallio (en referencias de .NET la que pone simplemente “Gallio” y la que pone “MbUnit”) .
En la clase agregamos la sentencia using: “using MbUnit.Framework;”
La clase la marcamos con el atributo de MbUnit que indica que es una clase de test: “[TestFixture"]”, y creamos un método nuevo, que será nuestro método de test, y le marcamos con el atributo “[Test"]”, dentro del método, la sintáxis es la misma que en los test de VSTS: Assert.IsTrue(true);
Lo primero que podemos ver, es que si vemos la lista de pruebas unitarias (y la refrescamos), nos aparecen dos, la de VSTS, y la de MbUnit, las dos juntitas 🙂 … pero sin mezclarse, si nos fijamos un poco más, veremos que tienen iconos distintos para indicarnos que son de distinto framework:
Bueno si ejecutamos, vemos que se ejecutan todas y que tenemos sus resultados en el mismo conjunto de resultados de pruebas que podemos publicar, etc.:
Esto lo tenéis funcionando ya en la Beta 1, con un pequeño “pero” … a mi me falla cuando ejecuto las pruebas desde línea de comandos con MSTest.exe, bueno y?, pues que en las Team Build se ejecutan mediante esa línea de comandos, y que no es que sólo me fallen las de MbUnit o cuando hay mezcladas, no se muy bien si es mi maquina, pero cuando instalo Gallio me falla siempre la línea de comandos 🙁 pero bueno, supongo que para siguientes Betas lo arreglarán, si no, efectivamente, esto no vale de nada :(.