JUnit Geparametriseerde test met voorbeeld met @Parameters
Wat is een geparametriseerde test in Junit?
Geparametriseerde test is het steeds opnieuw uitvoeren van dezelfde test met verschillende waarden. Het helpt ontwikkelaars tijd te besparen bij het uitvoeren van dezelfde test, die alleen verschilt qua invoer en verwachte resultaten.
Met behulp van geparametriseerde tests kan men een testmethode opzetten die gegevens uit een bepaalde gegevensbron ophaalt.
Overweeg een eenvoudige test om verschillende getallen op te tellen. De code kan er als volgt uitzien:
Bovenstaande aanpak leidt tot veel redundantie.
We hebben een eenvoudige aanpak nodig. Met behulp van een geparametriseerde test kunt u eenvoudigweg een methode toevoegen om 10 gegevensinvoer in te voeren, waarna uw test 10 keer automatisch wordt uitgevoerd.
Stappen voor het maken van een geparametriseerd JUnit proef
De volgende code toont een voorbeeld voor een geparametriseerde test. Het test de sum()-methode van de Arithmetic-klasse:
Stap 1) Maak een klasse. In dit voorbeeld gaan we twee getallen invoeren met behulp van de sum(int,int)-methode die de som van de gegeven getallen retourneert
Stap 2) Maak een geparametriseerde testklasse
Code Uitleg
- Coderegel 11: Annoteer uw testklasse met @runWith(Parameterized.class).
- Coderegel 13: De variabele 'firstNumber' declareren als private en type als int.
- Coderegel 14: De variabele 'secondNumber' declareren als privé en type als int.
- Coderegel 15: De variabele 'expectedResult' declareren als privé en type als int.
- Coderegel 16: De variabele 'airthematic' declareren als privé en het type als Airthematic.
@Rennen met(klasse_naam.klasse): @Rennen met annotatie wordt gebruikt om de naam van de runnerklasse op te geven. Als we geen enkel type als parameter opgeven, zal de runtime kiezen BlockJunit4ClassRunner standaard.
Deze klasse is verantwoordelijk voor het uitvoeren van tests met een nieuwe testinstantie. Het is verantwoordelijk voor het aanroepen JUnit levenscyclusmethoden zoals setup (resources koppelen) en demontage (resources vrijgeven).
Om te parametriseren moet u annoteren met @RunWith en de vereiste .class doorgeven om te testen
Stap 3) Maak een constructor waarin de testgegevens worden opgeslagen. Het slaat 3 variabelen op
Stap 4) Creëer een statische methode die testgegevens genereert en retourneert.
Coderegel 32,33: Een tweedimensionale array maken (invoerparameters leveren voor toevoeging). Met behulp van de asList-methode converteren we de gegevens naar een lijsttype. Omdat het retourtype van de methode-invoer verzameling is.
Coderegel 30: gebruik @Parameters annotatie om een set invoergegevens te maken om onze test uit te voeren.
De statische methode geïdentificeerd door de annotatie @Parameters retourneert een verzameling waarbij elk item in de verzameling de invoergegevens voor één iteratie van de test zal zijn.
Denk eens aan het element
1,2,3 {}
Here
eersteGetal =1
tweedeNummer=2
verwacht resultaat = 3
Hier wordt elk array-element één voor één doorgegeven aan de constructor, aangezien de klasse meerdere keren wordt geïnstantieerd.
Stap 5) De volledige code
Code Verklaring:
- Coderegel 25: @Before-annotatie gebruiken om de bronnen in te stellen (Airthematic.class hier). De annotatie @Before wordt hier gebruikt om vóór elke testcase uit te voeren. Het bevat de voorwaarde voor de test.
- Coderegel 36: @Test-annotatie gebruiken om onze test te maken.
- Coderegel 39: Een beweringverklaring maken om te controleren of onze som gelijk is aan wat we hadden verwacht.
Stap 6) Maak een testrunnerklasse om een geparametriseerde test uit te voeren:
Code Verklaring:
- Coderegel 8: Het declareren van de hoofdmethode van de klassentest die onze zal uitvoeren JUnit test.
- Coderegel 9: Bij het uitvoeren van testcases met JunitCore.runclasses wordt de naam van de testklasse als parameter gebruikt (in ons voorbeeld gebruiken we Airthematic.class).
- Coderegel 11: Het verwerken van het resultaat met behulp van for-lus en het afdrukken van het resultaat is mislukt.
- Coderegel 13: Het succesvolle resultaat afdrukken.
Output:
Hier is de uitvoer die een succesvolle test toont zonder fouttracering, zoals hieronder weergegeven:
Bekijk het resultaat op de console, dat de optelling van twee getallen laat zien:
Samenvatting
Met een geparametriseerde test kan de ontwikkelaar dezelfde test keer op keer uitvoeren met verschillende waarden.
Belangrijke annotaties die moeten worden gebruikt tijdens het parametriseren
- @Rennen met
- @Parameters