Pruebas Unitarias
Con este tutorial se realizara paso a paso el procedimiento para la creación, ejecución y personalización de una serie de pruebas unitarias utilizando el Visual Studio 2008, se comenzara con un proyecto en C# al cual se le crearan pruebas que utilicen código, se ejecutaran dichas pruebas y se examinaran los resultado.
1.- Se abre el Visual Studio 2008
2.- Se crea un nuevo proyecto de C# del tipo de Librería de Clases y nombramos al proyecto "Banco"
2.- Realiza doble clic en el archivo Class1 del explorador de soluciones.
3.- Se copia el código fuente que se anexa a continuación.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Banco
{
public class CuentaBancaria
{
private string N_NombreCliente;
private double C_Balance;
private bool C_congelada = false;
private CuentaBancaria()
{
}
public CuentaBancaria(string NombreCliente, double Balance)
{
N_NombreCliente = NombreCliente;
C_Balance = Balance;
}
public string nombreCliente
{
get {return N_NombreCliente;}
}
public double Balance
{
get {return C_Balance;}
}
public void Debito (double total)
{
if(C_congelada)
{
throw new Exception("Cuenta Congelada");
}
if (total < 0)
{
throw new ArgumentOutOfRangeException("total");
}
C_Balance += total;
}
public void Credito (double total)
{
if (C_congelada)
{
throw new Exception("Cuenta Congelada");
}
if (total > C_Balance)
{
throw new ArgumentOutOfRangeException("Total");
}
C_Balance += total;
}
private void CongelarCuenta()
{
C_congelada = true;
}
private void LiberarCuenta()
{
C_congelada = false;
}
public static void Main()
{
CuentaBancaria ca = new CuentaBancaria("Sr. Juan Rodriguez", 110.00);
ca.Credito(5.77);
ca.Debito(11.22);
Console.WriteLine("El balance actual es ${0}" , ca.C_Balance);
}
}
}
4.- Generar la solución.
5.- Dentro de "Class1.cs" Buscar el método "Debito" y dar clic derecho en este.
6.- Se mostrara el cuadro de dialogo y seleccione "Create Unit Test"
7.- Se mostrara la siguiente pantalla, la cual se muestra bajo una estructura de árbol, los miembros de la clase "CuentaBancaria", desde esta pantalla se pueden seleccionar los métodos de lo que se desee realizar pruebas unitarias.
8.- Para este tutorial, se selecciona el método "Debito()" y el método "Credito()"
9.- Hacemos clic en "Settings"
10.- Aparecerá la siguiente Pantalla.
11.- Dentro esta pantalla se encuentran las opciones generales de la prueba, se puede modificar la manera en la que se asignan los nombres a los archivos, clases y los métodos cuando se generan, para este tutorial conservaremos los valores predeterminados y daremos clic en Aceptar.
12.- En la pantalla de "Create Unit Tests" Haremos clic en "OK"
13.- Se muestra la pantalla para nombrar al proyecto de prueba, lo modificaremos por "BankUnitTest" y haremos clic en "Create"
14.- Se creara el proyecto de prueba el cual se muestra en el Solution Explorer
15.- Dentro del archivo "CuentaBancariaTest.cs" buscaremos el método de prueba "CreditoTest" donde se encuentre las líneas //TODO, esto indica las variables que se van a establecer.
16.- Para saber que valores se deben usar, abrimos el archivo "Class1.cs" y buscamos el método "Main"
Observaremos que el nombre del cliente inicializa con "Sr. Juan Rodriguez", el saldo se inicia con 11.99 y también notaremos que se llama al método "Credito" con los valores de 6.80, también se llama al método "Debito" con los valores de 11.22 por consiguiente esto significa que se empieza con un saldo en 11.99 y con la llama de a Debido se pasa 11.22 y debe de producir un nuevo balance de 0.77.
17.- Tomando los valores anteriores en cuenta volveremos al archivo "CuentaBancariaTest.cs" y dentro del método "DebitoTest" ingresaremos los siguientes valores:
CuentaBancaria target = new CuentaBancaria("Sr. Juan Rodriguez", 11.99);
double total = 11.22;
Realizaremos estas mismas modificaciones en el método "CreditoTest" y guardamos los cambios y el código con los cambios realizados se vera de esta manera:
18.- Para ejecutar las pruebas necesitamos abrir la ventana de "Test View" para lograr esto damos clic en el menú "Test" y luego seleccionamos el submenú "Windows" y seleccionamos "Test View", lo cual nos mostrara la siguiente ventana:
19.- Hacemos clic derecho en "DebitoTest" y seleccionamos "Run Selection", con lo cual se desplegara la ventana de "Test Results" la cual nos mostrara el estado de la prueba, primeramente se mostrara como en ejecución, al terminar el estado cambiara a "Inconclusive".
20.- Para saber el porqué de este resultado damos doble clic en la fila que representa la prueba en la ventana de "Test Results" , lo cual nos mostrara una página con los detalles de los resultados de la prueba.
21.- Si observamos con atención los resultados veremos que el mensaje de error indica "Assert.Inconclusive failed. A method that does not return a value cannot be verified." Para que la pruebe se ejecute de manera correcta tendremos que buscar la instrucción "Assert" dentro del archivo "CuentaBancariaTest.cs.
22.- La instrucción Assert es la ultima línea del método "DebitoTest" por el momento la marcaremos como comentario y volveremos a ejecutar la prueba.
23.- Al volver a ejecutar la prueba los resultados serán positivos, pero esto es porque no se está haciendo ningún tipo de comprobación, para lo cual debemos de agregar la siguiente línea de código al final del método "DebitTest"
Assert.AreEqual((System.Convert.ToDouble(0.77)), target.Balance, 0.05);
Esto quiere decir que la prueba se ejecutara y compara el resultado esperado (0.77) con el resultado real de la llamada al método "Balance" de la clase "CuentaBancaria", esta instrucción Assert incluye un tercer parámetro de sobrecarga (0.05) este parámetro para lo que nos ayuda es para compensar cualquier error de redondeo.
24.- Si realizamos de nuevo la prueba del método "DebitoTest" ahora el resultado de ejecución nos mostrara un error, si damos doble clic para ver el detalle de la ejecución de la prueba veremos que aparece el mensaje de error "Assert.AreEqual failed." También nos indica que el valor esperado (0.77) y el valor real (23.21)esto significa que dentro del método probado (Debito) existe un error en la operación matemática que este realiza.
25.- Abrimos el archivo Class1.cs y revisamos el método "Debito" observamos la siguiente línea de código:
C_Balance += total
Esto significa que el método "Debito" esta sumando cuando en el método "Debito" debería de restarse por lo cual la cambiamos para que sea:
C_Balance -= total
Y Procedemos a ejecutar de nuevo la prueba DebitoTest
26.- Ahora el resultado de la prueba debe de ser positivo.
Con esto finaliza la primera parte del tutorial de pruebas unitarias usando Visual Studio 2008.