@BeforeMethod und Vererbung - Reihenfolge der Ausführung (TestNG)

8

Meine Frage ist im Grunde die gleiche wie diese SOF-Frage , aber behandelt mit @BeforeMethod anstelle von @BeforeClass für TestNG.

Spielt die Testklassenvererbung einen Faktor bei der Bestimmung der Reihenfolge, in der @BeforeMethod annotierte Methoden ausgeführt werden? Wenn ich Klasse A habe und eine Klasse B A erweitert und beide eine @BeforeMethod -Methode haben, dann wird das Eltern (A) vor dem Kind (B) laufen oder wird das Kind vor dem Eltern laufen, oder hängt die Reihenfolge von einigen ab anderer Faktor wie die alphabetische Reihenfolge des Methodennamens. Ich versuche zu sehen, ob es eine Vererbungsreihenfolge gibt, auf die ich mich verlassen kann, anstatt Parameter der Annotation wie dependsOnMethods zu verwenden.

    
ecbrodie 29.12.2013, 14:47
quelle

3 Antworten

3
  

Wenn ich Klasse A habe und eine Klasse B erweitert A und beide eine @BeforeMethod-Methode haben, dann wird das Eltern (A) vor dem Kind (B) laufen [...]

Ja, werden sie.

@BeforeMethod -Methoden werden in der Reihenfolge der Vererbung ausgeführt - zuerst die höchste Superklasse und dann die Vererbungskette. @AfterMethod -Methoden werden in umgekehrter Reihenfolge ausgeführt (die Vererbungskette aufwärts).

Beachten Sie jedoch, dass die Reihenfolge mehrerer annotierter Methoden innerhalb einer Klasse nicht garantiert ist (also vermeiden Sie das am besten).

Das Lesen des Codes scheint in allen Versionen von TestNG der Fall gewesen zu sein, wurde jedoch erst im Oktober 2016 dokumentiert:

  

Die obigen Anmerkungen werden ebenfalls berücksichtigt (geerbt), wenn sie platziert werden   eine Oberklasse einer TestNG-Klasse. Dies ist beispielsweise nützlich um   Zentralisierung des Test-Setups für mehrere Testklassen in einem gemeinsamen   Oberklasse.

     

In diesem Fall garantiert TestNG, dass die "@Before" -Methoden sind   in Vererbungsreihenfolge ausgeführt (oberste Klasse zuerst, dann gehend   die Vererbungskette) und die "@After" -Methoden in umgekehrter Reihenfolge   (geht die Erbkette hinauf).

Siehe documentation-main.html auf GitHub oder Online-Dokumentation .

Disclaimer: Es war ich, der diesen Zusatz in den Dokumenten geschrieben und eingereicht hat.

    
sleske 10.10.2016, 07:27
quelle
0

Dies geschieht in JUnit, aber nicht in TestNG. Sie können das Kind jedoch einfach das Eltern-Setup explizit aufrufen.

%Vor%     
James Gawron 26.08.2015 16:18
quelle
-1

Die Reihenfolge hat nichts mit der Vererbung der Klasse zu tun.

Sie können versuchen, das Prioritätsattribut für die @Test Annotation festzulegen. Wenn in der Anmerkung keine Parameter festgelegt sind, werden sie in alphabetischer Reihenfolge ausgeführt.

Sie setzen den Methoden auch ein Präfix entsprechend der Reihenfolge, in der sie ausgeführt werden sollen (z. B. 01_method1() , 02_method2() ).

    
user3723314 18.06.2014 13:58
quelle

Tags und Links