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:

Geparametriseerde test in Junit

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

Stappen voor het maken van een geparametriseerd JUnit Test

Stap 2) Maak een geparametriseerde testklasse

Stappen voor het maken van een geparametriseerd JUnit Test

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

Stappen voor het maken van een geparametriseerd JUnit Test

Stap 4) Creëer een statische methode die testgegevens genereert en retourneert.

Stappen voor het maken van een geparametriseerd JUnit Test

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

Stappen voor het maken van een geparametriseerd JUnit Test

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:

Stappen voor het maken van een geparametriseerd JUnit Test

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:

Stappen voor het maken van een geparametriseerd JUnit Test

Bekijk het resultaat op de console, dat de optelling van twee getallen laat zien:

JUnit Geparametriseerde test

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