2012-06-14 6 views
5

Bei der Verwendung von TestNG + Selenium kann ich nicht die Reihenfolge der Ausführung von Klassen sicherstellen. Die unten angegebene Reihenfolge (in testng.xml) funktioniert nicht -> ClassTwo wird zuerst ausgeführt und dann wird ClassOne ausgeführt.Wie kann sichergestellt werden, dass die in TestNG.xml angegebene Reihenfolge beibehalten wird?

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="ABC" parallel=""> 
    <test verbose="2" name="xyz" annotations="JDK" preserve-order="true"> 
    <classes> 
     <class name="script.ClassOne"/> 
     <class name="script.ClassTwo"/> 
    </classes> 
    </test> 
</suite> 

Wie kann ich sicherstellen, dass die in TestNG.xml angegebene Reihenfolge beibehalten wird?

+0

Preserve-Auftrag funktioniert für mich..did einen einfachen Test. Können Sie Ihren Code veröffentlichen und ausgeben .. –

+0

Dies ist immer noch kaputt. Irgendeine Lösung für dieses Problem? – sebnukem

Antwort

4

Nach TestNG documentation:

standardmäßig TestNG werden die Tests in der Reihenfolge, wie sie gefunden werden, in die XML-Datei. Wenn Sie die Klassen und Methoden aufgelistet in dieser Datei ausgeführt werden sollten in einer unvorhersehbaren Reihenfolge mögen, stellen Sie das wahre Ordnung Attribut auf false

würde ich verlassen vorschlagen die preserve-order Attribut aus, da sie standardmäßig eingestellt ist .

Sie haben jedoch zwei weitere Optionen bestimmte Reihenfolge auf die Testmethoden/Klassen zu erzwingen:

  1. Invoke programmatisch prüft.
  2. Implementieren method interceptor, die die Liste der Tests bestellen wird.
+1

Aber in meinem Fall wird der in der Datei testng.xml definierte Ausführungsablauf nicht befolgt. Ich möchte, dass der Ausführungsfluss laut testng.xml erfolgen sollte. Wenn ich die Aufbewahrungsreihenfolge weglasse, bleibt das Problem bestehen. Was kann der Grund dafür sein? – Mandy

+0

Möglicherweise verwenden Sie eine ältere Version von TestNG, für die dieses Flag nicht standardmäßig festgelegt wurde. Stellen Sie sicher, dass Sie die neueste Version verwenden. –

+0

Ich habe bemerkt, die Reihenfolge der Methode funktioniert gut, wenn Sie sie explizit in der gewünschten Reihenfolge innerhalb einer Sammlung in Ihrer Definition auflisten. Ansonsten sind sie in einer unvorhersehbaren Reihenfolge. –

0

.... Ziemlich nach der Veranstaltung, aber ich hatte das gleiche Problem und fand mich hier.

Am Ende war es, weil die einzelnen Tests mit einer Priorität in der @Test Annotation markiert worden waren, so in meinem Fall aber Ihr Beispiel script.ClassTwo hatte eine höhere Priorität als script.ClassOne

4

Sie müssen nur auf parallel Wert eingestellt keine

<suite name="ABC" parallel="none"> 

es funktioniert für mich!