1.4 Pruebas¶
Una prueba unitaria comprueba automáticamente que una función devuelve lo esperado. En C# se suele usar xUnit, aunque también existen NUnit y MSTest, que funcionan de forma muy parecida.
Crear el proyecto de pruebas¶
Se hace en dos proyectos: el que contiene tu código y otro de pruebas que lo referencia.
dotnet new classlib -n Calculadora
dotnet new xunit -n Calculadora.Tests
dotnet add Calculadora.Tests reference Calculadora
La función¶
// Calculadora/Operaciones.cs
namespace Calculadora;
public static class Operaciones
{
public static int Suma(int a, int b) => a + b;
public static double Dividir(int a, int b)
{
if (b == 0) throw new ArgumentException("b no puede ser 0");
return (double)a / b;
}
}
La prueba¶
// Calculadora.Tests/OperacionesTests.cs
using Calculadora;
namespace Calculadora.Tests;
public class OperacionesTests
{
[Fact]
public void SumaDosPositivos()
{
Assert.Equal(5, Operaciones.Suma(2, 3));
}
[Fact]
public void DividirPorCeroLanzaExcepcion()
{
Assert.Throws<ArgumentException>(() => Operaciones.Dividir(1, 0));
}
[Theory]
[InlineData(1, 2, 3)]
[InlineData(0, 0, 0)]
[InlineData(-1, 1, 0)]
public void SumaVariosCasos(int a, int b, int esperado)
{
Assert.Equal(esperado, Operaciones.Suma(a, b));
}
}
dotnet test
[Fact]marca una prueba sin parámetros.[Theory]con[InlineData(...)]repite la misma prueba con varios juegos de datos.Assert.Equal(esperado, obtenido)comprueba un valor yAssert.Throws<T>comprueba que se lanza esa excepción.
Patrón AAA
Arrange (preparar), Act (ejecutar), Assert (comprobar).