Programação

Testes Unitários com C# (XUnit)

Testes unitários em C# com xUnit: criar o projeto, [Fact] e [Theory], Assert, testar uma classe de exemplo, rodar com dotnet test e boas práticas.

Capa: Testes Unitários com C# (XUnit)

O xUnit é uma das principais bibliotecas de testes unitários do .NET.

1. Crie os projetos

dotnet new classlib -n Loja
dotnet new xunit -n Loja.Tests
dotnet add Loja.Tests reference Loja

2. Classe a ser testada

public class Calculadora
{
    public decimal Desconto(decimal valor, decimal percentual)
    {
        if (percentual < 0 || percentual > 100)
            throw new ArgumentOutOfRangeException(nameof(percentual));
        return valor - valor * percentual / 100m;
    }
}

3. Escreva os testes

using Xunit;

public class CalculadoraTests
{
    [Fact]
    public void Desconto_10Porcento_Retorna90()
    {
        var calc = new Calculadora();
        Assert.Equal(90m, calc.Desconto(100m, 10m));
    }

    [Theory]
    [InlineData(100, 0, 100)]
    [InlineData(200, 50, 100)]
    public void Desconto_Varios(decimal valor, decimal pct, decimal esperado)
    {
        Assert.Equal(esperado, new Calculadora().Desconto(valor, pct));
    }

    [Fact]
    public void Desconto_PercentualInvalido_Lanca()
    {
        Assert.Throws<ArgumentOutOfRangeException>(() => new Calculadora().Desconto(100m, 150m));
    }
}

4. Execute

dotnet test

Boas práticas

  • Padrão AAA: Arrange, Act, Assert.
  • Um comportamento por teste, com nomes descritivos.
  • Testes independentes e rápidos.
  • Use mocks (Moq, NSubstitute) para dependências externas.

Veja também teste de software.

Mais artigos