Pruebas Unitarias Avanzadas con XUnit en Visual Studio
Clase 8 de 19 • Curso de Unit Testing con C# y .NET
Resumen
¿Cómo se crean pruebas unitarias de funciones en Visual Studio?
Las pruebas unitarias son esenciales para garantizar que el código funcione correctamente ante cambios o actualizaciones. En el contexto de Visual Studio, empleamos XUnit para implementar pruebas unitarias. Veamos un ejemplo práctico de cómo crear pruebas unitarias con XUnit utilizando la función quantityInWords
.
¿Qué es la función quantityInWords
y cómo la probamos?
La función quantityInWords
transforma un número y una palabra en un formato legible. Por ejemplo, al introducir "car" y 7, genera "7 cars", no pluralizando la palabra y convirtiendo el número en texto.
Para probar esta función:
-
Crear el objeto de prueba:
Primero, debes arreglar creando el objeto que contiene la función a probar. Usamos la estructura AAA:
var obj = new ClaseConLaFuncion(); // Reemplace con el nombre real de la clase que contiene la función
-
Ejecutar la función:
Luego, ejecuta la función deseada y almacena el resultado:
var result = obj.QuantityInWords("car", 7);
-
Verificar el resultado:
Detallamos las validaciones con dos aserciones diferentes de XUnit:
-
StartWith: Verifica que el texto comience con el string "seven":
Assert.StartsWith("seven", result);
-
Assert.Contains: Comprueba si el resultado incluye la palabra "car":
Assert.Contains("car", result);
-
Aclaración: Si tu entorno está en español, quizá debas adaptar las palabras esperadas al idioma configurado.
¿Cómo manejar excepciones en las pruebas unitarias?
En ocasiones, algunas funciones generan excepciones controladas para indicar errores en ciertas condiciones. Es crucial probar estos escenarios para asegurar la robustez de tu código.
Ejemplo con getStringLength
El método getStringLength
lanza una ArgumentNullException
si recibe un valor nulo. La prueba unitaria para este caso se estructura así:
var obj = new ClaseConLaFuncion(); // Nombre real de la clase
Assert.Throws<ArgumentNullException>(() => obj.GetStringLength(null));
Mediante Assert.Throws
, verificamos que se lance la excepción correcta cuando se da una condición específica.
Prueba del método truncateString
Procedimientos similares aplican para el método truncateString
. Este lanza una excepción si el parámetro maxLength
es igual o menor a cero. Es recomendable crear una prueba para este flujo, asegurando que manejará las excepciones adecuadamente.
Consejos para mejorar tus pruebas unitarias
- Comprueba distintas rutas de código: No todos los casos de uso son idénticos, así que asegúrate de cubrir los escenarios más relevantes.
- Refactoriza y reutiliza el código de prueba: Busca patrones repetitivos que puedas abstraer para hacer el mantenimiento más sencillo.
- Documenta tus pruebas: Anota de forma clara qué estás probando y por qué, lo cual es invaluable para la colaboración en equipo.
La práctica constante de probar ayudará a descubrir diferentes maneras de asegurar que tu código tenga el comportamiento esperado. Considera siempre ampliar tu suite de pruebas a medida que el código evoluciona para mantener la calidad. ¡Sigue practicando y mejora continuamente tus habilidades de codificación!