Tag Archives: TestNG

19Apr/17

Test NG – Testen

TEST NG

TestNG ist ein Framework, welches zum Testen von Java-Programmen geeignet sind. Besonders für automatisierte Test einzelner Methoden und Klassen wird dieses Framework genutzt. Mit diesem Framework können Tests parallel, gruppiert und Parameter steuernd durchgeführt werden.

Mit der Assert Funktion können Checkpoints in einem Test eingesetzt werden. Diese Initiative unterstützt die Überprüfung von Testannahmen. Erwartete und eigentliche Werte werden verglichen und ein Ergebnis (true oder false) wird ausgegeben.

Assert statements:

  • assertTrue () oder Assert.assertFalse();

Die erste Frage schlägt den Test fehl und stoppt die Ausführung vom Test, wenn der eigentliche Output false ist.

  • assertEquals()

Sofern die Antwort true ist, wird die Ausführung fortgefahren.

 

Mit den bekannten Assert Methoden werden die Prüfungen eins nach dem anderen durchgeführt. Doch wenn ein Testfall (TF) fehlschlägt kommt es zum Abbruch der Methode. Die weiteren Testfälle nach dem fehlgeschlagenen werden nicht ausgeführt. Damit alle Methoden getestet werden, sollte die Klasse

SoftAssert verwendet werden. Hiermit werden alle Methoden ausgeführt. Die hierfür relevante Methode lautet assertAll().

Bei der Erstellung einer TestNG Klasse können zusätzliche Methoden eingefügt werden (Mit eclipse kann dies bei der Erstellung der Klasse erfolgen), damit diese Methode vor bzw. nach jeder Methode oder Klasse ausgeführt werden kann.  Anbei ein Beispiel:

Testfälle werden in Test-Klassen eingefügt. Es liegen mehrere Testklassen vor, die jeweils eine Funktionalität beschreibt. Beispiel: Wie haben 10 Seiten einer Webseite zu testen. Je Seite wird eine Testklasse erstellt. Jeder dieser Testklasse wird in ein TestSuite aggregiert. Für einen Regressionstest kann es ein TestSuite geben, wo alle Testklassen eingefügt werden.

 

 

 

TestNG ermöglicht mir Hilfer einer XML Datei oder Annotationen Testmethoden und Tests zu gruppieren, zeitliche Abfolge einzustellen. Auch ein Testsuite wird in der Datei eingestellt.

 

Der Test wird von der XML Datei aus initiiert. Es können mehrere <Test> vorliegen, so dass man die Ausführung von einzelnen Methoden bevor und nach bestimmten Testmethoden definieren kann.

@BeforeClass(alwaysRun=true)  à Mit dieser Annotation  wird die Methode immer ausgeführt!

@Test(groups = {„Auto“, „Fahrrad“})  -à Mit diesem Annotation  können Methoden gruppiert werden. In der Konfigurationsdatei ist die Ausführung hinsichtlich der Gruppen nochmal zu spezifizieren. Mit einem define Tag in der XML Datei können auch mehrere Gruppen definiert werden.

Wie erstellt man abhängige Testmethoden? Es gibt Methoden, die abhängig von Ergebnissen anderer Methoden.

Hierfür muss bei der Erstellung der Methode die Annotation @Test (dependsOnMethods={}) eingefügt werden-

 

In dem obigen wird Testmethode 2 nur ausgeführt, wenn die Testmethode 1 ausgeführt wurde

Mit alwaysRun wird gesagt, dass die Methode immer ausgeführt werden soll, auch wenn die testMetod2 nicht erfolgreich ist.

Wie gibt man Parameter bei der Ausführung von Methoden mit? Diese Parameter werden in der XML Datei definiert.

In der Methode muss eine Annotation @Parameters eingefügt werden.

Der Schlüssel ‚Browser‘ wird gelesen und sein Schlüssel wird dann der Methode übergeben.

 

Wie können Testmethoden parallel ausgeführt werden?

Beim Tag suite muss das Argument parallel eingeschlossen werden. Hiermit können auch Klassen parallel ausgeführt werden. Dies definiert man in der Konfigurationsdatei.

Sie möchten eine Testmethode mit mehreren Inputs testen? Je Input eine Methode zu schrieben ist nicht effizient. Sie können aber mehrere Inputs einer Methode mitgeben.

 

 

Mit dem Annotation Dataprovider und dem Namen können einer Methode  Inputvariablen übergeben werden. Auch bei der Testmethode muss selber Name des DataProviders übergeben werden. In dem Fall oben werden die Methoden 3-mal mit den Inputs ausgeführt.

Empfohlen wird, dass DataProvider seine eigene Klasse hat. Die @Test Annotation muss auch den Namen der Klasse mitteilen, damit sie weiß wo er für nach DataProvider zu suchen hat.

ITestResult

Nach jeder Testmethode kennt das Objekt ITestResult das Resultat der letzten Testmethode. Mit diesem Wissen kann man eine beliebige weitere Aktion ausführen. Anbei ein Beispiel, wo der Name der Methode schreibt, wo es zu einem Fehlergekommen ist.

 

 

TestNG – Listener

TestNGListener hört nach Events zu. Wenn ein bestimmtes Even eintritt, kommt es zur Ausführung von definierten Methoden.

  • IInvokedMethodListener
  • Diese Klasse bietet die Implantierung der Methoden
  • afterInvocattion() und beforeInvocation() Diese werden vor und nach jeder Methode ausgeführt. in der Testklasse ausgeführt

 

 

 

ITestListener(){}  ::LISTENS DEPOENDING ON TEST result…success, or start of the test

Eine weitere Klasse ist ITestListener. Hiebei wird vor und nach einer Test-Methode oder Test-Klasse durchzuführenden Methoden beschrieben.

Für Suite gibt es die Klasse ISuiteListener, wo definierte Methodeb (onStart und onFinish) beim Start und Ende des Suites ausgeführt wird.