AppHarbor – Configuraciones de la aplicación y ejecución de tests unitarios

Finalizando la serie de posts sobre AppHarbor, vamos a ver algunos puntos generales sobre esta herramienta, y sobre todo la ejecución de tests unitarios como parte del proceso de integración continua que nos ofrece.

Como vimos en el post inicial de esta serie, una de las cosas que debemos hacer para comenzar a trabajar con AppHarbor es enlazar nuestra aplicación con el repositorio de control de código fuente donde tengamos el código de nuestra aplicación. Esta configuración es el primer paso del proceso de integración continua, ya que luego de esto ante cada vez que se suban cambios al repositorio comenzará descargando el contenido actualizado del mismo.

Una vez finalizado esto, comenzará el proceso de compilación. En el mismo se realizará la descarga de los paquetes NuGet que estemos usando, para luego si realizar la compilación en si del código de la aplicación. Sobre esta tarea AppHarbor nos permitirá elegir dentro de la configuración de la aplicación que configuración de compilación utilizar, lo cual es muy útil cuando tenemos distintas configuraciones para distintos ambientes. Esto será teniedo en cuenta para cuestiones de compilación, pero lo más útil será para aplicar las transformaciones necesarias al archivo Web.config:

AppHarbor - ConfiguracionPublicacion
Selección del perfil de compilación a usar

Otra opción que tendremos disponible es configurar que rama del repositorio queremos establecer para la sincronización con AppHarbor. Esto nos puede servir en proyectos con varias personas trabajando de forma separada en distintas ramas del repositorio, pero solo hay una estable que nos interesa integrar:

AppHarbor - ConfiguracionBranch
Configuración de la rama del repositorio a utilizar en la integración con AppHarbor

Una vez que finalice la compilación, y si el resultado fue correcto, comenzará con la etapa de exploración y ejecución de tests unitarios. Siguiendo con los lineamientos generales de la integración continua, se ejecutarán todos los tests disponibles en la aplicación para determinar la correctitud de la misma. Si el resultado es correcto, se procede a realizar la publicación de la nueva versión de la aplicación, caso contrario se nos indicará de alguna forma el error impidiendo la publicación de una versión errónea.

Vamos a probar esta funcionalidad. Lo primero que debemos hacer (si es que ya no lo tenemos realizado) es agregar un proyecto de tests a nuestra solución. Dependiendo de las características de nuestra aplicación, dependerá sobre que punto realizaremos nuestros tests, pudiendo hacerlo sobre casi todo lo que se nos ocurra. Para este post vamos a agregar el proyecto AppHarborDemo.Tests:

AppHarbor - AgregarProyectoTests

Dentro del mismo vamos a crear la estructura necesaria para poder hacer una prueba de las acciones de los controladores de nuestra aplicación web, en este caso lo haremos sobre el controlador Home:

AppHarbor - EstructuraProyectoTests

Y en el archivo HomeControllerTests, crearemos un tests simple para la acción Index como se ve a continuación, donde validamos el tipo del resultado y el nombre de la vista que se va a renderizar:

AppHarbor - ClaseDeTests

Si ejecutamos el tests, veremos que el resultado es el esperado:

AppHarbor - TestsEjecutadosCorrectamente

Ahora nos vamos al portal de administración de nuestra aplicación en AppHarbor. En el mismo veremos que el commit se ha procesado de forma correcta. En realidad como se ve en la imagen, el primero me salió mal por una cuestión de configuración de versiones de las referencias del proyecto, pero omitamos este detalle 😉

AppHarbor - CommitTestsCorrecto

Si vamos al detalle de dicho commit veremos que figura que efectivamente se han encontrado tests y que los mismos han pasado correctamente. Incluso si vamos al link “View test hierarchy” podremos ver el árbol de jerarquía de las clases de tests y los métodos correspondientes:

AppHarbor - DetalleTestsCorrecto
Detalle de la compilación indicando los tests que se han encontrado
AppHarbor - JerarquiaTests
Jerarquía de clases y métodos de tests encontrados

Ahora bien, ya que sabemos (y validamos) que AppHarbor busca y ejecuta nuestros tests, vamos a comprobar que realmente el commit sea rechazado cuando los tests no se ejecuten de forma correcta. Para esto modificaremos el caso Assert.IsInstanceOfType para lograr que el test falle:

AppHarbor - ModificacionTestError

Ahora volvemos a realizar el commit y push de estos cambios, y efectivamente veremos que AppHarbor nos indica que ha ocurrido un error para ese commit:

AppHarbor - CommitTestsIncorrecto

Nuevamente en el detalle del commit veremos que contamos con el detalle de los tests que han fallado, y a su vez si accedemos al mismo veremos el detalle del mismo (con el mensaje de error que agregamos en el Assert):

AppHarbor - DetalleTestsIncorrecto
Detalle de la compilación indicando los tests que han fallado
AppHarbor - DetalleMensajeTestIncorrecto
Detalle de la ejecución incorrecta del test

Con este post cerramos (al menos por ahora) la serie dedicada a AppHarbor. Como vimos en general, es una alternativa muy interesante para poder implementar el proceso de integración continua de nuestros desarrollos web. Incluso si no lo pensamos usar de esta forma completa, nos es útil para poder tener nuestra aplicación con un acceso público que nos permita realizar determinadas pruebas.

Gracias por leer!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s