Las pruebas unitarias nos ayudan a validar el funcionamiento de nuestro código. Se basan en el TDD o desarrollo basado en pruebas.
La filosofía del TDD se basa en:
- Escribir pruebas que fallen, se le da un color rojo.
- Escribir pruebas que pasen, en color verde.
- Refactorización, en azul.
Nosotros usaremos xUnit.
xUnit.net es una herramienta de prueba unitaria gratuita y de código abierto para .NET Framework (que se puede usar para C#, F# o Visual Basic).
Es similar a JUnit, pero para proyectos .NET.
Podemos hacer una breve comparativa.
Concepto | xUnit (.NET/C#) | JUnit (Java) |
---|---|---|
Lenguaje | C# | Java |
Anotación de prueba | [Fact] [Theory] | @Test |
Assert | Assert.Equal(), Assert.True() | Assertions.assertEquals(), etc. |
Setup/Teardown | Constructor, IDisposable | @BeforeEach, @AfterEach |
Organización | Por clase y métodos públicos | Por clase y métodos anotados |
Ejecución | dotnet test | mvn test, gradle test, etc. |
Instalamos algunos paquetes necesarios con Nuget (solo en caso de no tenerlos):
$ dotnet add package xunit $ dotnet add package xunit.runner.visualstudio $ dotnet add package Microsoft.NET.Test.Sdk
Comenzemos con una prueba sencilla. Una clase tiene un método para sumar dos números enteros. Crearemos una sencilla prueba para probar ese método.
1. Crear directorio del proyecto y ubicarnos en el.
$ mkdir Calculadora $ cd Calculadora
2. Crear una solución con este comando:
$ dotnet new sln
3. Crear un proyecto de biblioteca:
$ dotnet new classlib -n Calculadora.Core
En este crearemos una clase llamada ``Calculadora.cs`` que tendrá el método de la suma de dos números enteros (y que posteriormente pondremos a prueba).
namespace Calculadora.Core; public class Calculadora { public int Sumar(int a, int b) { return a + b; } }
4. Crear un proyecto de pruebas:
$ dotnet new xunit -n Calculadora.Tests
En este crearemos una clase ``CalculadoraTests.cs`` donde escribiremos dos métodos para probar el método de suma de la clase anterior.
using Xunit; using Calculadora.Core; namespace Calculadora.Tests; public class CalculadoraTests { [Fact] public void Sumar_DosNumerosEnteros_RetornaSumaCorrecta() { // Arrange var calculadora = new Calculadora.Core.Calculadora(); int a = 3; int b = 5; int esperado = 8; // Act int resultado = calculadora.Sumar(a, b); // Assert Assert.Equal(esperado, resultado); } [Fact] public void Sumar_NumerosNegativos_RetornaSumaCorrecta() { // Arrange var calculadora = new Calculadora.Core.Calculadora(); int a = -2; int b = -3; int esperado = -5; // Act int resultado = calculadora.Sumar(a, b); // Assert Assert.Equal(esperado, resultado); } }
Para los programadores Java que han usado JUnit esto les parecerá familiar.
5. Agregamos ambos proyectos a la solución:
$ dotnet sln add Calculadora.Core/Calculadora.Core.csproj $ dotnet sln add Calculadora.Tests/Calculadora.Tests.csproj
6. Agregamos una referencia del proyecto Calculadora.Core al proyecto de pruebas Calculadora.Tests:
$ cd Calculadora.Tests $ dotnet add reference ../Calculadora.Core/Calculadora.Core.csproj
7. Nos ubicamos en la raíz del proyecto (Calculadora):
Calculadora/ ├── Calculadora.Core/ │ ├── Calculadora.cs │ └── Calculadora.Core.csproj ├── Calculadora.Tests/ │ ├── CalculadoraTests.cs │ └── Calculadora.Tests.csproj └── Calculadora.sln
8. Abrimos una terminal y ejecutamos la prueba:
$ dotnet test
Salida:
Iniciando la ejecución de pruebas, espere... 1 archivos de prueba en total coincidieron con el patrón especificado. Correctas! - Con error: 0, Superado: 2, Omitido: 0, Total: 2, Duración: 8 ms - Calculadora.Tests.dll (net8.0)
¡Hemos creado nuestras primeras pruebas unitarias con xUnit!
Si tienes problemas ejecuta estos comandos uo por uno para limpiar, compilar y ejecutar el proyecto:
$ dotnet clean $ dotnet restore $ dotnet build $ dotnet test
Enlaces:
https://learn.microsoft.com/es-es/dotnet/core/testing/unit-testing-csharp-with-xunithttps://es.wikipedia.org/wiki/XUnit
https://xunit.net/?tabs=cs
https://dev.to/maadcode/introduccion-a-xunit-una-poderosa-herramienta-para-unit-testing-en-net-34b0
No hay comentarios:
Publicar un comentario