Introducción
Pruebas Unitarias en .NET: Calidad en Desarrollo de Aplicaciones
Pruebas Unitarias en C# con .NET y Visual Studio 2022
Pruebas Unitarias: Conceptos y Metodología TDD
Pruebas Unitarias en .NET con XUnit: Implementación y Ejemplos
Descarga y Configuración de Proyecto para Pruebas Unitarias en GitHub
Quiz: Introducción
Pruebas unitarias con xUnit
Creación de Pruebas Unitarias con XUnit en Visual Studio
Pruebas Unitarias con XUnit: Buenas Prácticas y Estructura AAA
Pruebas Unitarias Avanzadas con XUnit en Visual Studio
Parámetros en Pruebas Unitarias con Theory e InlineData en XUnit
Uso del Atributo Skip en Pruebas XUnit
Quiz: Pruebas unitarias con xUnit
¿Qué hemos aprendido?
Pruebas Unitarias en .NET con XUnit: Resumen y Buenas Prácticas
Quiz: ¿Qué hemos aprendido?
Utilizando librería moq
Simulación de Dependencias con Mock en Pruebas Unitarias
Pruebas unitarias con la librería Mock en C#
Simulación de Dependencias y Comportamiento con Mock en Pruebas Unitarias
Quiz: Utilizando librería moq
Cobertura de pruebas unitarias
Cobertura de Pruebas Unitarias en .NET con Coverlet
Cobertura de Código con Coverlet en Visual Studio
Configuración de Coverlet para Mejorar Reportes de Cobertura
Generación de Reportes Visuales de Cobertura en Visual Studio
Quiz: Cobertura de pruebas unitarias
Cierre
Pruebas Unitarias en .NET con XUnit: Conceptos y Prácticas
Quiz: Cierre
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
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
.
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.
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.
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.
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.
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!
Aportes 11
Preguntas 2
[Fact]
public void GetStringLength()
{
//Arrange
var strStringManipulation = new StringOperations();
//Act
var word = "New word";
var result = strStringManipulation.GetStringLength(word);
//Assert
Assert.Equal(word.Length, result);
}
[Fact]
public void TruncateString_Exception()
{
//Arrange
var strStringManipulation = new StringOperations();
//Act //Assert
Assert.ThrowsAny<ArgumentOutOfRangeException>(() => strStringManipulation.TruncateString("Test",0));
}
Así quedaría el Test para la función TruncateString.
[Fact]
public void TruncateString_Exception()
{
var strOperations = new StringOperations();
Assert.ThrowsAny<ArgumentOutOfRangeException>(()=>strOperations.TruncateString("Platzi", -2));
}
Efectivamente el test es aprobado.
Así quedaría la prueba que no es una Excepción.
[Fact]
public void GetStringLength()
{
var strOperations = new StringOperations();
var result = strOperations.GetStringLength("Platzi");
Assert.True(result > 0);
}
El test saldría así.
[Fact]
public void RemoveWhitespace()
{
var strOperations = new StringOperations();
var result = strOperations.RemoveWhitespace("1 2 3 4 5 6 ");
Assert.Equal("123456", result);
}
Así quedó mi test
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?