Wat is een geparametreerde test in Junit?
Geparametriseerde test is om dezelfde test keer op keer uit te voeren met verschillende waarden. Het helpt ontwikkelaars om tijd te besparen bij het uitvoeren van dezelfde test, die alleen verschilt in hun invoer en verwachte resultaten.
Met behulp van een geparametriseerde test kan een testmethode worden opgezet die gegevens uit een 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 en. Met een geparametriseerde test kunt u gewoon een methode toevoegen om 10 gegevensinvoer in te voeren en uw test wordt 10 keer automatisch uitgevoerd.
Stappen om een geparametriseerde JUnit-test te maken
De volgende code toont een voorbeeld voor een geparametriseerde test. Het test de methode sum () van de klasse Arithmetic:
Stap 1) Maak een klas. In dit voorbeeld gaan we twee getallen invoeren met behulp van de som (int, int) -methode die de som van de gegeven getallen retourneert
Stap 2) Maak een geparametriseerde testklasse
Code Verklaring
- Coderegel 11: annoteer uw testklasse met @runWith (Parameterized.class).
- Code Regel 13: Declareer de variabele 'firstNumber' als privé en typ als int.
- Code Regel 14: Declareer de variabele 'secondNumber' als privé en typ als int.
- Code Regel 15: Declareer de variabele 'verwachtResult' als privé en typ als int.
- Coderegel 16: de variabele 'airthematic' als privé declareren en typen als Airthematic.
@RunWith (class_name.class): @RunWith annotatie wordt gebruikt om de naam van de runner class te specificeren. Als we geen type als parameter specificeren, zal de runtime standaard BlockJunit4ClassRunner kiezen .
Deze klasse is verantwoordelijk voor tests die worden uitgevoerd met een nieuwe testinstantie. Het is verantwoordelijk voor het aanroepen van de levenscyclusmethoden van JUnit, zoals setup (geassocieerde bronnen) en teardown (vrijgavebronnen).
Om te parametriseren, moet u annoteren met @RunWith en de vereiste .class doorgeven om te worden getest
Stap 3) Maak een constructor die de testgegevens opslaat. Het slaat 3 variabelen op
Stap 4) Maak een statische methode die testgegevens genereert en retourneert.
Coderegel 32,33: Creëren van een tweedimensionale array (met invoerparameters voor optelling). Met behulp van de asList-methode converteren we de gegevens naar een lijsttype. Sindsdien is het retourtype van de methode-invoer verzameling.
Code Line 30: Met behulp van @Parameters annotatie om een set van gegevens in te voeren onze test uit te voeren creëren.
De statische methode geïdentificeerd door @Parameters annotatie retourneert een verzameling waarbij elk item in de verzameling de invoergegevens zal zijn voor één iteratie van de test.
Overweeg het element
{1,2,3}
Hier
firstNumber = 1
secondNumber = 2
VerwachtResultaat = 3
Hier wordt elk array-element één voor één aan de constructor doorgegeven, 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 @Before-annotatie 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 assert-statement maken om te controleren of onze som equivalent is aan wat we hadden verwacht.
Stap 6) Maak een testrunner-klasse om een geparametriseerde test uit te voeren:
Code Verklaring:
- Coderegel 8: de hoofdmethode aangeven van de klassetest die onze JUnit-test zal uitvoeren.
- Coderegel 9: testcases uitvoeren met JunitCore.runclasses, het zal de naam van de testklasse als parameter gebruiken (in ons voorbeeld gebruiken we Airthematic.class).
- Coderegel 11: Verwerking van het resultaat met for-lus en afdrukken van mislukt resultaat.
- Coderegel 13: het succesvolle resultaat afdrukken.
Uitgang:
Hier is de uitvoer die een succesvolle test laat zien zonder foutopsporing, zoals hieronder weergegeven:
Zie het resultaat op de console, dat de toevoeging van twee getallen laat zien: -
Samenvatting :
Met een geparametreerde test kan de ontwikkelaar dezelfde test keer op keer uitvoeren met verschillende waarden.
Belangrijke annotaties die moeten worden gebruikt tijdens parametrering
- @Rennen met
- @Parameters