Inom mjukvaruutveckling är enhetstestning en process som isolerar och testar dedikerade delar av en applikation. Enheter är den formella termen för dessa dedikerade sektioner. I din Java-applikation är en enhet en metod.

Det finns många ramverk för enhetstestning tillgängliga för Java-utvecklare. Bland de bästa ramverken är JUnit 5.

Varför är enhetstestning viktigt?

Om du någonsin har skrivit felsökningssatser för att skriva ut och kontrollera värdet på en variabel, grattis; du har skapat ett enhetstest. Denna engångssektion av koden var nödvändig eftersom du inte fick önskad utdata.

Men vad händer om du fick önskad utdata och koden fortfarande innehöll ett fel någonstans? Du kan distribuera programmet och det här felet kan resultera i ett säkerhetsintrång senare. För applikationer som lagrar användarnas data är insatserna höga när det finns ett säkerhetsbrott.

Enhetstestning riktar sig till varje del av din applikation – oavsett om den för närvarande orsakar ett fel eller inte. Därför spelar enhetstestning en betydande roll i bra mjukvarusäkerhet.

instagram viewer

Vad är JUnit 5?

JUnit 5 är mer än bara ett ramverk för enhetstestning. Den har flera delprojekt, nämligen JUnit Platform, JUnit Jupiter och JUnit Vintage. Var och en av dessa tre komponenter har unika moduler som arbetar tillsammans för att förbättra testning för Java-programmerare.

JUnit 5-plattformen är tillgänglig i de senaste versionerna av de bästa Java Integrated Development Platforms (IDE). Java IDE som stöder JUnit 5 är:

  • IntelliJ IDÉ
  • Förmörkelse
  • NetBeans
  • Visual Studio-kod

Skapa enhetstester med JUnit 5

Detta exempelprogram använder JUnit 5 för att skapa flera enhetstester på en enkel kalkylatorapplikation.

Kalkylatorklassen

paket app;

offentligklassKalkylator{
offentligstatiskintLägg till(int nummer1, int num2){
lämna tillbaka num1 + num2;
}

offentligstatiskintsubtrahera(int nummer1, int num2){
lämna tillbaka num1 - num2;
}

offentligstatiskintmultiplicera(int nummer1, int num2){
lämna tillbaka num1 * num2;
}

offentligstatiskintdela upp(int nummer1, int num2){
lämna tillbaka num1 / num2;
}
}

De Java klass ovan utför fyra statiska operationer: addition, subtraktion, multiplikation och division. Varje metod tar två heltalsargument och returnerar ett enda heltalsvärde.

JUnit 5-testklassen

paket testa;

importerastatisk org.junit. Hävda.*;
importera app. Kalkylator;
importeraorg.junit.Testa;

offentligklassKalkylatorTest{
@Testa
offentligtomhettestLägg till(){
assertEquals(7, Kalkylator.Lägg till(3, 4));
}

@Testa
offentligtomhettest Subtrahera(){
assertEquals(6, Kalkylator.subtrahera(9, 3));
}

@Testa
offentligtomhettestMultiplicera(){
assertEquals(10, Kalkylator.multiplicera(5, 2));
}

@Testa
offentligtomhettestDela(){
assertEquals(2, Kalkylator.dela upp(4, 2));
}
}

KalkylatorTest introducerar två viktiga begrepp: den @Testa anteckning och assertEquals() metod. @Test-anteckningen indikerar att metoden direkt under den är en testmetod. I testklassen ovan finns fyra testmetoder, en för var och en av kalkylatoroperationerna.

Alla testmetoder använder assertEquals()-metoden. Denna metod tar två obligatoriska argument och ett valfritt tredje argument. Det första argumentet som ges till assertEquals()-metoden ovan är det förväntade resultatet, och det andra argumentet är metoden (eller enheten) du vill bedöma.

Klassen CalculatorTest har ingen huvudmetod, men JUnit @Test-kommentarerna gör var och en av testmetoderna körbara. Att köra CalculatorTest-klassen i eclipse producerar följande gränssnitt:

Som du kan se är varje test framgångsrikt. Det finns fyra tester, och alla körde utan fel eller misslyckanden.

Lärenhetstestning kan utöka dina karriärmöjligheter

Som utvecklare är det en fördel att ha kunskap om hur man testar programvara. Det kommer säkerligen att förbättra ditt arbetsflöde och förhoppningsvis göra din kod lättare att använda för andra. Det finns dock en gren av mjukvaruutveckling som enbart fokuserar på testning. Dessa ingenjörer är kända som mjukvarutestare.