Come scrivere unit test in C# per una migliore qualità del codice

Come Scrivere Unit Test In C Per Una Migliore Qualita Del Codice



Quando la maggior parte di noi inizia come sviluppatore, difficilmente pensiamo o dedichiamo molto tempo ai test unitari. Tuttavia, quando si entra in un ambiente di repository più complesso e condiviso, diventa sempre più essenziale testare il codice prima di distribuirlo in produzione.

È quindi essenziale acquisire i fondamenti del test unitario nelle prime fasi di sviluppo per evitare la curva di apprendimento quando si ha a che fare con basi di codice estese.

In questo tutorial ti introdurremo nel framework degli unit test utilizzando C# e la libreria di testing MSTest. Costruiremo un'applicazione di base che ti permetterà di imparare come creare gli unit test, come eseguirli e come interpretare i risultati di un fallimento o di un successo di un test.







Ambiente di test

Cominciamo discutendo la soluzione di test e come configurare la nostra applicazione di base.



Per seguire e replicare l'applicazione in questo tutorial, assicurati di avere quanto segue:



  1. VisualStudio installato
  2. Strumenti .NET e C# configurati sul tuo computer

Crea un'applicazione

Successivamente, apri Visual Studio e crea una nuova soluzione. Per questo tutorial, creeremo un'applicazione calcolatrice di base. Puoi dare all'applicazione qualsiasi nome desideri.





Successivamente, crea un nuovo progetto e seleziona il tipo di progetto come Progetto di test MSTest e assegnagli il nome desiderato.



Assicurati di selezionare 'Aggiungi alla soluzione' e scegli l'app creata in precedenza.

Dovresti avere l'applicazione principale e il progetto di test unitario come mostrato in Solution Explorer.

Scrivi il codice per l'applicazione Calcolatrice

Il prossimo passo è scrivere il codice per la nostra applicazione calcolatrice. Possiamo farlo nel file 'program.cs' di CalcApp.

Poiché stiamo cercando funzionalità di base, possiamo aggiungere il codice sorgente come segue:

Calcolatrice di classe pubblica
{
pubblico Doppio Aggiungere ( Doppio UN , Doppio B )
{
ritorno UN + B ;
}

pubblico Doppio Sottrarre ( Doppio UN , Doppio B )
{
ritorno UN - B ;
}

pubblico Doppio Moltiplicare ( Doppio UN , Doppio B )
{
ritorno UN * B ;
}

pubblico Doppio Dividere ( Doppio UN , Doppio B )
{
Se ( B == 0 )
lancia una nuova DivideByZeroException ( ) ;
ritorno UN / B ;
}
}

Come puoi immaginare, il codice precedente crea un'app calcolatrice in grado di eseguire le applicazioni aritmetiche di base.

Scrivi i test unitari

Una volta terminato, possiamo scrivere i test unitari per la classe “Calcolatrice”. In questo caso non dovremo fare altro che scrivere i test nel file “UnitTest” del progetto come segue:

utilizzando il sistema ;

spazio dei nomi CalcApp
{
Calcolatrice di classe pubblica
{
pubblico Doppio Aggiungere ( Doppio UN , Doppio B )
{
ritorno UN + B ;
}

pubblico Doppio Sottrarre ( Doppio UN , Doppio B )
{
ritorno UN - B ;
}

pubblico Doppio Moltiplicare ( Doppio UN , Doppio B )
{
ritorno UN * B ;
}

pubblico Doppio Dividere ( Doppio UN , Doppio B )
{
Se ( B == 0 )
lancia una nuova DivideByZeroException ( ) ;
ritorno UN / B ;
}
}
}

spazio dei nomi CalcTest
{
[ TestClass ]
classe pubblica CalculatorTests
{
calcolatrice calcolatrice privata ;

[ TestInitialize ]
pubblico vuoto Impostare ( )
{
calcolatrice = nuova calcolatrice ( ) ;
}

[ Metodo di prova ]
pubblico vuoto Add_TwoPositiveNumbers_ReturnsCorrectSum ( )
{
è stato il risultato = calcolatrice. Aggiungere ( 5 , 5 ) ;
Affermare. Sono uguali ( 10 , risultato ) ;
}

[ Metodo di prova ]
pubblico vuoto Subtract_TwoPositiveNumbers_ReturnsCorrectDifference ( )
{
è stato il risultato = calcolatrice. Sottrarre ( 10 , 5 ) ;
Affermare. Sono uguali ( 5 , risultato ) ;
}

[ Metodo di prova ]
pubblico vuoto Multiply_TwoPositiveNumbers_ReturnsCorrectProduct ( )
{
è stato il risultato = calcolatrice. Moltiplicare ( 5 , 5 ) ;
Affermare. Sono uguali ( 25 , risultato ) ;
}

[ Metodo di prova ]
[ ExpectedException ( tipo di ( DivideByZeroException ) ) ]
pubblico vuoto Divide_DenominatorIsZero_ThrowsDivideByZeroException ( )
{
è stato il risultato = calcolatrice. Dividere ( 5 , 0 ) ;
}

[ Metodo di prova ]
pubblico vuoto Divide_TwoPositiveNumbers_ReturnsCorrectQuoziente ( )
{
è stato il risultato = calcolatrice. Dividere ( 10 , 5 ) ;
Affermare. Sono uguali ( 2 , risultato ) ;
}
}
}

Conclusione

Questo è un tutorial di base che copre i fondamenti dello unit test in C# utilizzando il framework MSTest.