Las
pruebas unitarias son muy importantes en el proceso de desarrollo de una aplicación, para realizarlas podemos usar las herramientas incluidas en
Visual Studio, pero no todas las versiones tienen esta característica, y por supuesto esta la gente que no usa
Visual Studio, Aquí es donde entra
Nunit que es un
framework para realizar pruebas unitarias que no depende en lo absoluto de
Visual Studio.
Nunit es la version para
Net Framework del original
Junit que es la versión para
Java y se puede obtener de la
pagina oficial de Nunit.
Una vez instalado creamos de preferencia un proyecto separado para nuestras pruebas este proyecto puede ser preferentemente de tipo librería de clases ya que toda la interacción con nuestras pruebas se hace usando el ejecutable de
Nunit, A este proyecto añadimos una referencia a la dll
nunit .framework.dll que se encuentra en el directorio en que se instalo
Nunit (no en el
GAC), también añadimos una referencia al proyecto que vamos a probar y empezamos a crear las pruebas.
La forma básica en que se crea una prueba es creando una clase que tiene aplicado el atributo
TestFixture a esta clase le añadimos métodos con el atributo
Test aplicado estos métodos son los que utilizaremos para crear las pruebas por supuesto podemos añadir también clases y métodos sin los atributos mencionados que podrían ser para ayudar en el proceso de prueba.
En nuestros métodos de prueba lo que haremos es usar los
métodos de Nunit para comprobar que nuestras clases den los resultados esperados, el mas comúnmente usado es el metodo
AreEqual de la clase
Assert de
Nunit que compara una variable contra un valor esperado.
Aquí esta el ejemplo, lo primero que les muestro es la clase que vamos a probar:
1: namespace Prueba.Data {
2: public class User {
3: public string Name { get; set; }
4: public string Password { get; set; }
5: public User(string name, string password) {
6: Name = name;
7: Password = password;
8: }
9: }
10: }
Y después nuestra clase de prueba:
1: using NUnit.Framework;
2: using Prueba.Data;
3:
4: namespace NunitTests {
5: [TestFixture]
6: public class UserTest {
7: [Test]
8: public void ConstructorTest() {
9: User user = new User("Pedro", "secreto");
10: Assert.AreEqual("Pedro", user.Name);
11: Assert.AreEqual("secreto", user.Password);
12: }
13: }
14: }
Una vez que tenemos listas las pruebas compilamos el proyecto y abrimos
el ejecutable de Nunit con el que se realizaran las pruebas.
En
Nunit usamos el menú
File -> Open Project y abrimos la dll que se genero al compilar el proyecto, en el panel izquierdo aparecerá un árbol que contiene todos los métodos que creamos para las pruebas en una jerarquía que sigue a la del proyecto, podemos ejecutar un solo método una rama del arbol o todas las pruebas a la vez.
En este caso solo tenemos una prueba presionamos el botón Run y se ejecutara el proyecto de pruebas una barra de progreso nos muestra el porcentaje de pruebas ejecutadas según se van ejecutando y el color verde nos indica que ninguna ha fallado en caso contrario cambiara a color rojo.
Si al final hubo errores se mostraran en el árbol y en los paneles inferiores mostrando la prueba que fallo e información acerca de el error incluyendo la posición en el código que fallo, también podemos depurar el código en la ejecución usando el depurador de
Visual Studio u otro depurador escogiendo la instancia de
Nunit como el ejecutable a depurar.
Por supuesto
NUnit puede probar muchas más cosas que la igualdad de miembros, por ejemplo algo muy útil es que puede probar cuando un método manda una excepción en el momento adecuado, pero la API de
NUnit es muy amplia para un blog y lo mejor es que te dirijas a la
documentación de NUnit para la última versión para una mejor referencia.
Para aprender más acerca de las
pruebas unitarias con .Net Framework visita:
Lista de artículos acerca de pruebas unitarias con .Net Framework