loading experience

Architettura e qualità

Test in .NET con xUnit v3: unitari e di integrazione

Come organizzare i test di un progetto .NET moderno, dai test unitari alle API testate in memoria.

Test in .NET con xUnit v3: unitari e di integrazione

I test sono la rete di sicurezza che permette di aggiornare framework e librerie senza paura. xUnit v3 è la nuova generazione di uno dei framework di test più usati in .NET.

Più si scende, più i test sono numerosi, veloci ed economici.
Più si scende, più i test sono numerosi, veloci ed economici.

Un test unitario

public class ScontoTests
{
    [Theory]
    [InlineData(100, 0)]
    [InlineData(200, 10)]
    [InlineData(1000, 100)]
    public void Calcola_RestituisceLoScontoAtteso(decimal totale, decimal atteso)
    {
        var sconto = CalcoloSconto.Per(totale);
        Assert.Equal(atteso, sconto);
    }
}

Novità di xUnit v3

  • I progetti di test sono eseguibili e girano sulla nuova piattaforma di test di Microsoft, più leggera.
  • TestContext.Current dà accesso al test in corso, compreso un CancellationToken che si annulla se il test viene interrotto.
  • Test saltati in modo dinamico e un migliore supporto ai test asincroni.

Test di integrazione per le API

WebApplicationFactory avvia l'intera applicazione ASP.NET Core in memoria: le richieste attraversano middleware, routing e serializzazione veri, senza aprire porte di rete.

public class ProdottiApiTests(WebApplicationFactory<Program> factory)
    : IClassFixture<WebApplicationFactory<Program>>
{
    [Fact]
    public async Task GetProdotti_RispondeOk()
    {
        var client = factory.CreateClient();
        var risposta = await client.GetAsync("/api/prodotti", TestContext.Current.CancellationToken);
        risposta.EnsureSuccessStatusCode();
    }
}

Cosa testare

Le regole di business con test unitari veloci e numerosi; i percorsi principali delle API con test di integrazione; pochi test end-to-end per i flussi critici. Un test che fallisce a caso va sistemato subito: altrimenti nessuno si fiderà più della suite.

Commenti (0)

Nessun commento ancora.

Lascia un commento