Unit testing en ASP.NET5

El testing unitario es una herramienta muy importante para ayudar a mantener la calidad y mantenibilidad del código. Hace años que Visual Studio tiene su propio framework de tests unitarios (MSTest) y sus propias plantillas de proyecto asociadas. Pero para realizar tests unitarios en proyectos ASP.NET5 ni MSTest ni, obviamente, las plantillas de proyecto propias de Visual Studio pueden utilizarse. Vamos a ver que nuevas herramientas tenemos integradas para la creación de tests unitarios en ASP.NET5.

Hasta ahora si teníamos un código (supongamos una librería de clases) y queríamos probarlo, habitualmente agregábamos un proyecto de tipo «Unit test» a la solución:

unit-test1

Luego, desde ese proyecto, agregábamos una referencia al proyecto que queríamos probar y empezábamos a realizar los tests unitarios. Si el proyecto a probar es un proyecto ASP.NET5, no vamos a poder agregar dicha referencia, ya que un proyecto «tradicional» no puede tener referencias a los «nuevos» proyectos DNX.

Para crear un proyecto de tests unitarios que prueben un proyecto ASP.NET5 debemos crear otro proyecto ASP.NET5, es decir un «Class Library (Package)»:

unit-test2

Esto nos crea un proyecto que usa toda la nueva infrastructura de DNX pero que contiene una «librería de clases». Esos proyectos pueden crear fácilmente paquetes NuGet que luego podemos desplegar.

Ahora editamos el project.json y agregamos las referencias al nuevo framework de tests unitarios usados en ASP.NET5: xUnit:

[snippet id=»232″]

Observa que agregamos la referencia al propio xUnit y al runner bajo DNX. Además agregamos también la referencia al proyecto ASP.NET5 que queremos probar (MyProject.ToTest). Ahora ya podemos empezar a codificar los tests. Como todos los frameworks de tests unitarios xUnit tiene sus peculiaridades y diferencias, pero los conceptos fundamentales son los mismos:

[snippet id=»233″]

El siguiente punto es modificar el project.json del proyecto que contiene los tests para agregar un comando para lanzar los tests. Visual Studio requiere que dicho comando exista y se llame test. En dicho comando invocaremos el runner:

[snippet id=»234″]

Una vez tenemos los tests creados los podemos ejecutar directamente desde Visual Studio, con el Test Explorer. Si no aparecen, recompila toda la solución y deberían aparecer (o bien dale al botón «run all» del Test Explorer, a veces le cuesta encontrar los tests o actualizar la lista).

Por supuesto ASP.NET5 no depende para nada de Visual Studio, así que podemos invocar los tests desde la línea de comandos: navegamos hacia donde está el project.json y ejecutamos dnx test:

unit-test3

Este comando ejecutará todos los tests y nos indicará cuantos han tenido éxito y cuales son los que han fallado. Si observas la captura de pantalla verás que, en este caso, está usando el DNX Runner (64-bit DNXCore 5.0). Esto es porque en esta línea de comandos esta es la versión de DNX que estoy usando. Por supuesto, puedes cambiar de versión con dnvm, de forma que si la versión que tienes seleccionada es la de 32 bits para el CLR completo, esa será la versión del runner que te aparecerá.

Y nada más, podemos ver que usar ASP.NET5 no es excusa para no tener nuestros propios tests unitarios 🙂

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *