Was ist ein parametrisierter Test in Junit?
Der parametrisierte Test besteht darin, denselben Test immer wieder mit unterschiedlichen Werten auszuführen. Dies hilft dem Entwickler, Zeit bei der Ausführung desselben Tests zu sparen, der sich nur in seinen Eingaben und erwarteten Ergebnissen unterscheidet.
Mit dem parametrisierten Test kann eine Testmethode eingerichtet werden, mit der Daten aus einer Datenquelle abgerufen werden.
Betrachten Sie einen einfachen Test, um verschiedene Zahlen zu summieren. Der Code könnte aussehen wie -
Der obige Ansatz führt zu viel Redundanz.
Wir brauchen einen einfachen Ansatz und. Mit dem parametrisierten Test können Sie einfach eine Methode zur Eingabe von 10 Dateneingaben hinzufügen, und Ihr Test wird 10 Mal automatisch ausgeführt.
Schritte zum Erstellen eines parametrisierten JUnit-Tests
Der folgende Code zeigt ein Beispiel für einen parametrisierten Test. Es testet die sum () -Methode der arithmetischen Klasse:
Schritt 1) Erstellen Sie eine Klasse. In diesem Beispiel geben wir zwei Zahlen mit der Methode sum (int, int) ein, die die Summe der angegebenen Zahlen zurückgibt
Schritt 2) Erstellen Sie eine parametrisierte Testklasse
Code Erklärung
- Codezeile 11: Kommentieren Sie Ihre Testklasse mit @runWith (Parameterized.class).
- Codezeile 13: Deklarieren der Variablen 'firstNumber' als privat und Typ als int.
- Codezeile 14: Deklarieren der Variablen 'secondNumber'as als privat und Typ als int.
- Codezeile 15: Deklarieren der Variablen 'expectedResult' als privat und Typ als int.
- Codezeile 16: Deklarieren der Variablen 'airthematic' als privat und Typ als Airthematic.
@RunWith (class_name.class): Die Annotation @RunWith wird verwendet, um den Namen der Runner-Klasse anzugeben. Wenn wir keinen Typ als Parameter angeben, wählt die Laufzeit standardmäßig BlockJunit4ClassRunner .
Diese Klasse ist dafür verantwortlich, dass Tests mit einer neuen Testinstanz ausgeführt werden. Es ist für das Aufrufen von JUnit-Lebenszyklusmethoden wie Setup (Ressourcen zuordnen) und Herunterfahren (Ressourcen freigeben) verantwortlich.
Zur Parametrisierung müssen Sie mit @RunWith Anmerkungen machen und die zu testende erforderliche .class übergeben
Schritt 3) Erstellen Sie einen Konstruktor, der die Testdaten speichert. Es werden 3 Variablen gespeichert
Schritt 4) Erstellen Sie eine statische Methode, die Testdaten generiert und zurückgibt.
Codezeile 32,33: Erstellen eines zweidimensionalen Arrays (Bereitstellung von Eingabeparametern zum Hinzufügen). Mit der asList-Methode konvertieren wir die Daten in einen Listentyp. Da der Rückgabetyp der Methodeneingabe Sammlung ist.
Codezeile 30: Verwenden der Annotation @Parameters zum Erstellen eines Satzes von Eingabedaten zum Ausführen unseres Tests.
Die durch die Annotation @Parameters angegebene statische Methode gibt eine Sammlung zurück, wobei jeder Eintrag in der Sammlung die Eingabedaten für eine Iteration des Tests sind.
Betrachten Sie die elemenent
{1,2,3}
Hier
firstNumber = 1
secondNumber = 2
expectedResult = 3
Hier wird jedes Array-Element einzeln an den Konstruktor übergeben, da die Klasse mehrmals instanziiert wird.
Schritt 5) Der vollständige Code
Code Erläuterung:
- Codezeile 25: Verwenden der Annotation @Before zum Einrichten der Ressourcen (Airthematic.class hier). Die Annotation @Before wird hier verwendet, um vor jedem Testfall ausgeführt zu werden. Es enthält die Voraussetzung für den Test.
- Codezeile 36: Verwenden der @ Test-Annotation zum Erstellen unseres Tests.
- Codezeile 39: Erstellen einer Assert-Anweisung, um zu überprüfen, ob unsere Summe unseren Erwartungen entspricht.
Schritt 6) Erstellen Sie eine Testläuferklasse, um einen parametrisierten Test auszuführen:
Code Erläuterung:
- Codezeile 8: Deklarieren der Hauptmethode des Klassentests, mit dem unser JUnit-Test ausgeführt wird.
- Codezeile 9: Beim Ausführen von Testfällen mit JunitCore.runclasses wird der Name der Testklasse als Parameter verwendet (in unserem Beispiel verwenden wir Airthematic.class).
- Codezeile 11: Verarbeiten des Ergebnisses mit for-Schleife und Ausdrucken des fehlgeschlagenen Ergebnisses.
- Codezeile 13: Drucken des erfolgreichen Ergebnisses.
Ausgabe:
Hier ist die Ausgabe, die einen erfolgreichen Test ohne Fehlerverfolgung anzeigt, wie unten angegeben:
Sehen Sie sich das Ergebnis auf der Konsole an, auf dem zwei Zahlen hinzugefügt werden: -
Zusammenfassung :
Mit dem parametrisierten Test kann der Entwickler denselben Test immer wieder mit unterschiedlichen Werten ausführen.
Wichtige Anmerkungen, die während der Parametrierung verwendet werden müssen
- @ RunWith
- @ Parameter