Tests unitarios con NUnit (u otros) con VS11 y en TFSService

Con Visual Studio 2010 para poder correr tests unitarios con NUnit teníamos que hacer un poco de trabajo extra, desde instalar una extensión que nos creaba un tipo de proyecto especial, utilizar plugins como TestDriven o simplemente correr los tests desde el runner de NUnit. Ahora con VS11 tenemos esta integración mucho más sencilla, tanto con NUnit como con otros frameworks de test.

Lo que tenemos que hacer es irnos al extension manager de VS11 (Tools ->  Extension Manager ) y bajar por el árbol hasta Online Extensions -> Visual Studio Gallery -> Tools -> Testing. En nuestro caso, seleccionaremos NUnit Test Adapter.

Como veis, ya hay otros adaptadores disponibles y seguro que irán apareciendo más. Los adaptadores lo que son es un puente entre los comandos a los que llama Visual Studio ( como podrían ser “descubre tests”, “corre tests”, etc ) y las propias llamadas del framework con el que se trabaje. Esto permite que se puedan integrar todos los diferentes tests unitarios en el IDE y tener una mejor experiencia. Podéis leer más información en este artículo de Peter Provost.

Al añadir la extensión de Visual Studio este nos pide reiniciar y al hacerlo, voilà!! Ya tenemos nuestros tests con NUnit pasándose y mostrando el resultado en la ventana de Test Explorer. Obviamente, tendremos que haber incluido, preferiblemente por NuGet, la librería de NUnit para poder compilar los tests.

Es curioso ver como el primer tests de NUnit tarda un poquitín más que el primer test de MSTest.

Si tuviéramos una build de integración continua configurada en el nuevo servicio de builds de TFSService ( como vimos en el artículo de ayer ) y subiéramos nuestros cambios a TFSService, podríamos ver que los tests de NUnit no se están pasando, ya que las máquinas de TFSService, no lo traen configurado por defecto. Por suerte, arreglar esto es algo muy sencillo.

Primero de todo nos vamos a bajar la misma extensión de Visual Studio a nuestro ordenador (a no ser que ya lo hubiéramos hecho antes en lugar de instalarla por NuGet). Esto lo podemos hacer accediendo a la siguiente página http://aka.ms/nunit-vs11. Cuando tengamos el vsix en nuestro disco duro, le cambiamos la extensión a .zip y lo descomprimimos a una carpeta.

Copiamos todas las dlls y las metemos en una carpeta de nuestro control de código fuente.

 Ahora solo hace falta indicarle a nuestro controlador de builds que los custom assemblies los busque en esta carpeta. Así que nos vamos a la sección de builds del Team Explorer, clicamos sobre Actions y seleccionamos la acción Manage Build Controllers

En la ventana de configuración que nos sale, seleccionamos el Hosted Build Controller

Y accedemos a sus propiedades y modificamos el valor de Versión Control Path to Custom Assemblies al valor adecuado en nuestro caso.

 

Ya podemos volver a correr la build y podremos ver como se pasan tanto los tests de MSTest como los de NUnit.

Un saludo!!

Fuente: http://blogs.msdn.com/b/visualstudioalm/archive/2012/03/27/build-on-the-team-foundation-service.aspx

Creación de una build con el nuevo servicio de builds para TFS Service

Hace un par de días, Brian Harry anunció que ya estaba disponible el nuevo servicio en la nube para poder crear builds de un proyecto alojado en TFS Service. Como ya sabéis, TFS Service es un TFS11 alojado en Azure y, por ahora, con acceso gratuito mediante invitación.

Hasta hace un par de días, una de las limitaciones que tenía este servicio es que no proveía de la posibilidad de crear builds también alojadas en la nube, con lo que nos teníamos que crear nosotros la infraestructura necesaria para ello, ya sea instalando en una máquina local un agente de build de TFS11 o alojándolo nosotros mismos en Azure. Ahora esto ya no es así, y Microsoft ya nos provee de un servicio donde poder alojar nuestras builds y, a parte, facilísimo de configurar.

Para crear una build, haremos lo que estamos acostumbrados a hacer con nuestro TFS de toda la vida, es decir, ir al apartado de builds de nuestro Team Explorer y clicar sobre New Build Definition.

 Se nos abrirá la pantalla de definición de builds donde configuraremos los parámetros de la build que nos interesen. En este caso, hay dos parámetros críticos: el controlador de la build y el drop folder.

Como veis, nos ha aparecido un controlador nuevo, llamado Hosted Build Controller, que es el que tenemos que seleccionar. Por otra parte, por una limitación de azure, no podemos copiar el output de la build a un path UNC, así que tendremos que escoger la opción de copiarlo en una carpeta del Source Control. Vigilad en no poner una carpeta que tengáis mapeada en un proyecto, para no bajaros información innecesaria.

Y ya está, ya tenemos todo lo necesario para correr nuestra build. Ya podemos poner una build en la cola y esperar que esta finalice, a poder ser de manera satisfactoria claro :-)

Mañana veremos como podemos configurar el adaptador de nUnit para pasar los tests con este framework desde Visual Studio y como configurar la build para que también lo haga.

Un saludo!

Mi participación en el Codemotion.es

El pasado 24 de marzo tuve el placer de participar en la primera edición española del Codemotion. Mi charla fue una introducción a Kinect y tuve el gusto de compartirla con el gran @elbruno. Podéis ver en la entrada de su blog una descripción de la charla así como la descarga de los materiales y slides.

En este artículo me gustaría centrarme más en dar mi opinión sobre las cosas que me gustaron y las que considero que son mejorables del evento en sí, tanto desde el punto de vista de ponente como desde el punto de vista de asistente. Vaya por delante mi respeto enorme por la organización, que fue capaz de convocar y gestionar la participación de unas 1000 personas.

Empecemos por lo mejorable. Como ponente me parece que la selección de las charlas fue un poco caótica. Nosotros mismos no nos enteramos de que nos habían seleccionado la charla hasta 15 días antes, que es un tiempo un poco justo para organizar una buena charla, sobretodo teniendo en cuenta de que había gente que hacía un mes que lo sabía. También fue un poco justo el aviso de la cena de ponentes, con solo un par de días de antelación, que nos cogió con los billetes ya comprados con lo que nos fue imposible asistir.

En cuanto al punto de vista de asistente, me sumo a la petición de aulas más grandes. Hubo charlas en que el aula estaba a reventar (tuvimos la “suerte” de ser una de estas, síntoma de que la charla interesaba) y la gente no pudo entrar a escuchar temas que le interesaban. A parte, el sonido en algunas de ellas era bastante mejorable, siendo difícil de escuchar nítidamente al ponente.

Por otra parte, aunque esto es un problema de los eventos en general, sigo sin ver claro el valor que aporta a los patrocinadores tener un pequeño stand en medio de un pasillo. No tengo claro que el retorno de inversión del patrocinio sea elevado con esta forma de promoción. Es algo en que las organizaciones de los eventos y los patrocinadores en sí deberían mejorar para poder ofrecer algo diferente y de más valor.

Y vamos ahora a por lo bueno. Me parece increíble juntar a unas 1000 personas en un evento de desarrollo en nuestro país. Creo que la gestión del registro y de los 15 minutos entre charlas estuvo muy bien resuelto, no habiendo demasiado follón ni colas. La comida, un punto crítico en toda organización de eventos, estuvo muy bien resuelta con la bolsa con el bocadillo y la bebida, permitiendo a la gente que se sentara donde le apeteciera, evitando colas interminables y saturación de la cafetería y facilitando un buen tiempo de networking.

En definitiva, me pareció un muy buen evento con un amplio rango de mejora.

Un saludo!