Los unit test o test unitarios son pruebas que se realizan sobre un proyecto para comprobar que su funcionamiento es el esperado. Para que sea eficiente, nuestro código debe estar bien estructurado.

El funcionamiento de los test unitarios se basa en afirmaciones. Es decir, se pueden preguntar cosas como:

  • ¿El String mensaje tiene texto «Soy un mensaje»?
  • ¿El int edad es mayor que 18?
  • ¿El objeto alumno contiene un valor null?

A la hora de realizar estos test se deben tener claros los parámetros que debe cumplir el proyecto.

A continuación voy a mostrar un ejemplo de implementación de unit test en Visual Studio. El contenido completo del proyecto se encuentra en el siguiente enlace: GitHub

Visual Studio

En primer lugar creamos el proyecto. En este ejemplo usaremos la plantilla de ASP.NET Web Application con MVC.

1

Seleccionamos also create a project for unit test.

2

Al agregar unit test sobre el proyecto se crea una copia de la estructura del mismo para realizar las pruebas.

Debemos desarrollar nuestro proyecto normalmente. En este ejemplo le hemos agregado a nuestro proyecto un controlador, AlumnosController, sobre el que realizaremos las pruebas.

AlumnosController consta de las siguientes vistas:

  • Index: Devuelve una lista de todos los alumnos y datos como el número de alumnos y el alumno mayor.
  • Detalles: Muestra los detalles de un alumno.
  • Clases: Muestra una lista con las clases de los alumnos. Al pulsar sobre una clase te muestra los alumnos que hay en ella.

El código del controller es el siguiente:

controller

Cuando se realizan pruebas unitarias se debe descomponer el programa en trozos más pequeños donde poder valorar individualmente si cumplen con la función que se espera.

Habitualmente se descompone en cada uno de los métodos de un controller.

Sobre el explorador de soluciones veremos lo siguiente:

3

Nos posicionamos en el proyecto .Test sobre la carpeta Controllers. Pulsamos botón derecho, agregar, prueba unitaria.

4

Después la renombraremos y la llamaremos NombreControllerTest.

5

En el archivo creado tenemos la siguiente estructura:

6

El atributo [TestClass] indica que es una clase dedicada a pruebas y el [TestMethod] indica que es un método de test dentro de una prueba unitaria. 

Le vamos a cambiar el nombre al método para identificar que vista estamos testeando. Se llamará Index() y contendrá el siguiente código.

7

En primer lugar instanciamos al controlador, después instanciamos el ViewResult, que es lo que devuelve el controlador a la vista y añadimos las variables a testear.

Para realizar las pruebas usamos Asserts, que son afirmaciones.

En este caso evaluamos:

  • Assert.IsNotNull(result): Que el resultado no sea nulo.
  • Assert.IsTrue(totalalumnos > 0, «No hay alumnos registrados»): Que haya más de 0 alumnos. En caso contrario queremos que muestre «No hay alumnos registrados» .
  • Assert.AreEqual(«Lorena», alumnomayor): Que el alumno mayor sea Lorena.

Podemos lanzar las pruebas. Para ello vamos a la barra de menú superior, pulsamos Prueba y Ejecutar todas las pruebas.

8

Si alguna de las afirmaciones no se cumpliera, el test fallará.

9

En caso contrario veremos que todo esta bien:

10

Hay más condiciones que se pueden evaluar. A modo de ejemplo podemos comprobar si el resultado es de un tipo concreto:

11

Ejecutaremos por última vez los test.

12

Todos los test son correctos, lo que significa que nuestro controlador cumple con los requerimientos de la app.

Autor/a: Eunoe Sánchez Avilés

Curso: Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin

Centro: Tajamar

Año académico: 2019-2020

Código de la solución: Ver en GitHub

Leave a Comment

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.