Bij softwareontwikkeling is unit testing een proces dat specifieke delen van een applicatie isoleert en test. Eenheden zijn de formele term voor deze speciale secties. In uw Java-toepassing is een eenheid een methode.

Er zijn veel frameworks voor unit-testing beschikbaar voor Java-ontwikkelaars. Een van de topframes is JUnit 5.

Waarom is unittesten belangrijk?

Als je ooit debug-instructies hebt geschreven om de waarde van een variabele af te drukken en te controleren, gefeliciteerd; je hebt een eenheidstest gemaakt. Dit wegwerpgedeelte van de code was nodig omdat u niet de gewenste uitvoer ontving.

Maar wat als u de gewenste uitvoer ontving en de code nog ergens een fout bevat? Mogelijk implementeert u de toepassing en deze bug kan later leiden tot een beveiligingsinbreuk. Voor toepassingen die gegevens van gebruikers opslaan, staat er veel op het spel wanneer er een inbreuk op de beveiliging is.

Unit testing richt zich op elk onderdeel van uw applicatie, of het nu een fout veroorzaakt of niet. Daarom speelt unit-testing een belangrijke rol in: goede softwarebeveiliging.

instagram viewer

Wat is JUnit 5?

JUnit 5 is meer dan alleen een ander unit-testraamwerk. Het heeft verschillende subprojecten, namelijk het JUnit Platform, de JUnit Jupiter en de JUnit Vintage. Elk van deze drie componenten heeft unieke modules die samenwerken om het testen voor Java-programmeurs te verbeteren.

Het JUnit 5-platform is beschikbaar in de nieuwste versies van de beste Java Integrated-ontwikkelplatforms (IDE). De Java IDE's die JUnit 5 ondersteunen zijn:

  • IntelliJ IDEE
  • Verduistering
  • NetBeans
  • Visual Studio-code

Eenheidstests maken met JUnit 5

Dit voorbeeldprogramma gebruikt JUnit 5 om verschillende eenheidstests te maken op een eenvoudige rekenmachinetoepassing.

De rekenklas

pakket app;

openbaarklasRekenmachine{
openbaarstatischinttoevoegen(int nummer1, int aantal2){
opbrengst aantal1 + aantal2;
}

openbaarstatischintaftrekken(int nummer1, int aantal2){
opbrengst num1 - num2;
}

openbaarstatischintvermenigvuldigen(int nummer1, int aantal2){
opbrengst aantal1 * aantal2;
}

openbaarstatischintverdeling(int nummer1, int aantal2){
opbrengst aantal1 / aantal2;
}
}

De Java-klasse hierboven voert vier statische bewerkingen uit: optellen, aftrekken, vermenigvuldigen en delen. Elke methode heeft twee integer-argumenten en retourneert een enkele integer-waarde.

De JUnit 5 Testklasse

pakket testen;

importerenstatisch org.junt. Beweren.*;
importeren app. Rekenmachine;
importerenorg.junit.Testen;

openbaarklasRekenmachineTest{
@Testen
openbaarleegtetestToevoegen(){
assertIs gelijk aan(7, Rekenmachine.toevoegen(3, 4));
}

@Testen
openbaarleegtetestAftrekken(){
assertIs gelijk aan(6, Rekenmachine.aftrekken(9, 3));
}

@Testen
openbaarleegtetestVermenigvuldigen(){
assertIs gelijk aan(10, Rekenmachine.vermenigvuldigen(5, 2));
}

@Testen
openbaarleegtetestVerdelen(){
assertIs gelijk aan(2, Rekenmachine.verdeling(4, 2));
}
}

RekenmachineTest introduceert twee belangrijke concepten: de @Testen annotatie en de assertEquals() methode. De @Test-annotatie geeft aan dat de methode direct eronder een testmethode is. In de bovenstaande testklasse zijn er vier testmethoden, één voor elk van de rekenmachinebewerkingen.

Alle testmethoden gebruiken de methode assertEquals(). Deze methode heeft twee verplichte argumenten en een optioneel derde argument. Het eerste argument dat aan de methode assertEquals() hierboven wordt gegeven, is het verwachte resultaat en het tweede argument is de methode (of eenheid) die u wilt beoordelen.

De klasse CalculatorTest heeft geen hoofdmethode, maar de JUnit @Test-annotaties maken elk van de testmethoden uitvoerbaar. Het uitvoeren van de CalculatorTest-klasse in eclipse levert de volgende interface op:

Zoals u kunt zien, is elke test geslaagd. Er zijn vier tests en ze zijn allemaal zonder fouten of storingen verlopen.

Testen van leereenheden kan uw carrièremogelijkheden vergroten

Als ontwikkelaar is het een voordelige vaardigheid om te weten hoe je software moet testen. Het zal uw workflow zeker verbeteren en hopelijk uw code gemakkelijker te gebruiken maken voor anderen. Er is echter een tak van softwareontwikkeling die zich uitsluitend op testen richt. Deze ingenieurs staan ​​bekend als softwaretesters.