¿Qué es esta biblioteca y para qué sirve?
\n\nxUnit y NUnit son las dos bibliotecas más populares para pruebas unitarias (unit testing) en el ecosistema .NET (C#, F#, VB.NET). Permiten a los desarrolladores escribir pruebas automáticas que verifican la corrección del funcionamiento de módulos individuales del programa (clases, métodos, funciones).
\n\n¿Para qué sirve?
\n- \n
- Detección temprana de errores: Las pruebas se ejecutan después de cada cambio en el código, lo que permite identificar inmediatamente regresiones (cuando el código nuevo rompe la funcionalidad anterior). \n
- Refactorización sin miedo: Puede reescribir el código con confianza si está seguro de que las pruebas lo cubren. Si las pruebas pasan, todo funciona como antes. \n
- Documentación en acción: Las pruebas muestran exactamente cómo se debe usar un método determinado, qué parámetros acepta y qué devuelve. \n
- Integración CI/CD: Las pruebas se ejecutan automáticamente en los servidores de compilación (GitHub Actions, Azure DevOps, Jenkins) antes del despliegue. \n
Diferencia entre xUnit y NUnit:
\n- \n
- NUnit — es una biblioteca más antigua (puerto de Java JUnit), utiliza los atributos
[Test],[SetUp],[TearDown]. Tiene un rico conjunto de atributos para parametrización. \n - xUnit — es una biblioteca más moderna, creada por el autor de NUnit. Utiliza el atributo
[Fact]para pruebas normales y[Theory]para pruebas parametrizadas. Se distingue por un enfoque más estricto en el aislamiento de pruebas (cada prueba es una nueva instancia de la clase). \n
En este artículo revisaremos ambas bibliotecas, pero nos centraremos principalmente en xUnit, ya que Microsoft la recomienda para nuevos proyectos.
\n\nInstalación
\n\nLa instalación se realiza a través del administrador de paquetes NuGet. Puede usar la consola del administrador de paquetes (Package Manager Console) o la CLI de .NET.
\n\nInstalación de xUnit
\n// A través de .NET CLI\ndotnet add package xunit\ndotnet add package xunit.runner.visualstudio\n\n// A través de Package Manager Console\nInstall-Package xunit\nInstall-Package xunit.runner.visualstudio\n\nInstalación de NUnit
\n// A través de .NET CLI\ndotnet add package NUnit\ndotnet add package NUnit3TestAdapter\n\n// A través de Package Manager Console\nInstall-Package NUnit\nInstall-Package NUnit3TestAdapter\n\nImportante: Para ejecutar pruebas en Visual Studio o Rider, también es necesario instalar un adaptador del ejecutor de pruebas (por ejemplo, xunit.runner.visualstudio o NUnit3TestAdapter).
Inicio rápido con ejemplo de código
\n\nSupongamos que tenemos una clase simple Calculator con el método Add. Escribamos pruebas para ella en xUnit y NUnit.
Clase a probar (Calculator.cs)
\npublic class Calculator\n{\n public int Add(int a, int b)\n {\n return a + b;\n }\n\n public int Divide(int a, int b)\n {\n if (b == 0)\n throw new DivideByZeroException("¡No se puede dividir por cero!");\n return a / b;\n }\n}\n\nPrueba en xUnit (CalculatorTests.cs)
\nusing Xunit;\n\npublic class CalculatorTests\n{\n [Fact]\n public void Add_ShouldReturnSum_WhenTwoPositiveNumbers()\n {\n // Arrange (Preparación)\n var calculator = new Calculator();\n int a = 5;\n int b = 3;\n\n // Act (Acción)\n int result = calculator.Add(a, b);\n\n // Assert (Verificación)\n Assert.Equal(8, result);\n }\n\n [Fact]\n public void Divide_ShouldThrowException_WhenDivideByZero()\n {\n var calculator = new Calculator();\n\n Assert.Throws<DivideByZeroException>(() => calculator.Divide(10, 0));\n }\n}\n\n