Hur man skriver enhetstester i C# för bättre kodkvalitet

Hur Man Skriver Enhetstester I C For Battre Kodkvalitet



När de flesta av oss börjar som utvecklare tänker vi knappt eller ägnar mycket tid åt enhetstestning. Men när du kommer in i en mer komplex och delad förvarsmiljö blir det mer och mer viktigt att testa koden innan du distribuerar den i produktion.

Det är därför viktigt att få grunderna för enhetstestning tidigt i dina utvecklingsstadier för att undvika inlärningskurvan när du hanterar omfattande kodbaser.

I den här handledningen kommer vi att introducera dig i ramverket för enhetstestning med C# och testbiblioteket MSTest. Vi kommer att bygga en grundläggande applikation som låter dig lära dig hur du skapar enhetstesten, hur du kör dem och hur du tolkar resultaten från ett misslyckande eller framgång med ett test.







Testmiljö

Låt oss börja med att diskutera testlösningen och hur vi konfigurerar vår grundläggande applikation.



För att följa och replikera applikationen i denna handledning, se till att du har följande:



  1. Installerade Visual Studio
  2. Konfigurerade .NET- och C#-verktyg på din maskin

Skapa en applikation

Öppna sedan Visual Studio och skapa en ny lösning. För den här handledningen kommer vi att bygga en grundläggande kalkylatorapplikation. Du kan ge ansökan med vilket namn du vill.





Skapa sedan ett nytt projekt och välj projekttypen som MSTest Test Project och ge det ett önskvärt namn.



Se till att välja 'Lägg till lösning' och välj den tidigare skapade appen.

Du bör ha huvudapplikationen och enhetstestningsprojektet som visas i lösningsutforskaren.

Skriv koden för kalkylatorapplikationen

Nästa steg är att skriva koden för vår kalkylatorapplikation. Vi kan göra detta i CalcApp-filen 'program.cs'.

Eftersom vi letar efter grundläggande funktionalitet kan vi lägga till källkoden enligt följande:

miniräknare för offentlig klass
{
offentlig dubbel Lägg till ( dubbel a , dubbel b )
{
lämna tillbaka a + b ;
}

offentlig dubbel Subtrahera ( dubbel a , dubbel b )
{
lämna tillbaka a - b ;
}

offentlig dubbel Multiplicera ( dubbel a , dubbel b )
{
lämna tillbaka a * b ;
}

offentlig dubbel Dela upp ( dubbel a , dubbel b )
{
om ( b == 0 )
kasta nya DivideByZeroException ( ) ;
lämna tillbaka a / b ;
}
}

Som du kan gissa skapar den tidigare koden en kalkylatorapp som kan utföra de grundläggande aritmetiska applikationerna.

Skriv enhetstesten

När vi är klara kan vi skriva enhetstesten för klassen 'Kalkylator'. I det här fallet behöver vi bara skriva testerna i projektets 'UnitTest'-fil enligt följande:

använder System ;

namnutrymme CalcApp
{
miniräknare för offentlig klass
{
offentlig dubbel Lägg till ( dubbel a , dubbel b )
{
lämna tillbaka a + b ;
}

offentlig dubbel Subtrahera ( dubbel a , dubbel b )
{
lämna tillbaka a - b ;
}

offentlig dubbel Multiplicera ( dubbel a , dubbel b )
{
lämna tillbaka a * b ;
}

offentlig dubbel Dela upp ( dubbel a , dubbel b )
{
om ( b == 0 )
kasta nya DivideByZeroException ( ) ;
lämna tillbaka a / b ;
}
}
}

namnutrymme CalcTest
{
[ Testklass ]
kalkylatortest i offentlig klass
{
privat kalkylator kalkylator ;

[ Testinitialisera ]
offentlig tomhet Uppstart ( )
{
kalkylator = ny kalkylator ( ) ;
}

[ Testmetod ]
offentlig tomhet Add_TwoPositiveNumbers_ReturnsCorrectSum ( )
{
            var result = kalkylator. Lägg till ( 5 , 5 ) ;
Hävda. Är jämlika ( 10 , resultat ) ;
}

[ Testmetod ]
offentlig tomhet Subtract_TwoPositiveNumbers_ReturnsCorrectDifference ( )
{
            var result = kalkylator. Subtrahera ( 10 , 5 ) ;
Hävda. Är jämlika ( 5 , resultat ) ;
}

[ Testmetod ]
offentlig tomhet Multiply_TwoPositiveNumbers_ReturnsCorrectProduct ( )
{
            var result = kalkylator. Multiplicera ( 5 , 5 ) ;
Hävda. Är jämlika ( 25 , resultat ) ;
}

[ Testmetod ]
[ ExpectedException ( sorts ( DivideByZeroException ) ) ]
offentlig tomhet Divide_DenominatorIsZero_ThrowsDivideByZeroException ( )
{
            var result = kalkylator. Dela upp ( 5 , 0 ) ;
}

[ Testmetod ]
offentlig tomhet Divide_TwoPositiveNumbers_ReturnsCorrectQuotient ( )
{
            var result = kalkylator. Dela upp ( 10 , 5 ) ;
Hävda. Är jämlika ( 2 , resultat ) ;
}
}
}

Slutsats

Detta är en grundläggande handledning som täcker grunderna för enhetstestning i C# med MSTest-ramverket.