2016-12-14 1 views
0

Ich habe zwei Methoden wie unten gezeigt. Ich führe die Suite unter Verwendung testng.xml durch thread-count="2" parallel="methods" halten, so dass alle @Test Methoden parallel ausgeführt werden.Wie synchronisiert man den Zeilen-zu-Zeilen-Fluss von zwei Methoden beim Testen der parallelen Ausführung?

@Test 
//this method will be executed in firefox 
public void method1(){ 
    WebDriver driver=new FirefoxDriver(); 
    driver.get("https://google.co.in"); 
    line2; 
    line3; 
} 

    @Test 
//this method will be executed other window of firefox 
public void method2(){ 
    WebDriver driver=new FirefoxDriver(); 
    driver.get("https:gmail.com"); //has to be executed only after the opening of google in method1 
    line2; //has to be executed after the line2 of method1 
    line3; //has to be executed after the line3 of method1 
} 

Zwei Methoden werden parallel ausgeführt, ohne voneinander abhängig zu sein. Aber gemäß meiner Anforderung (erwähnt in den Code-Kommentaren) ist es möglich, die Ausführung von method2 von der Ausführung von method1 abhängig zu machen?

Antwort

0

Fügen Sie die unten dependsOnMethods in @Test

@Test(dependsOnMethods = { "method1" }) 
public void method2(){ 
     ..... 
} 
+0

..here dependsOnMethods wird die zweite Methode erst nach der vollständigen Ausführung von method1 laufen. Aber ich möchte eine Synchronisation zwischen Zeile 1 von Methode 1 zu Zeile 1 von Methode 2 und so weiter, d. H. Zeile 1 von Methode 2 sollte nur nach der Ausführung von Zeile 1 von Methode 1 ausgeführt werden. Bitte kommentieren Sie noch einmal für eine Klarstellung. – Toothless

+0

Wenn dies der Fall ist, müssen Sie in beiden Methoden Ihre eigene Synchronisationslogik schreiben. Erwerben Sie in Methode 1 eine Sperre und führen Sie die Logik aus, und geben Sie die Sperre frei. Bis Sie die Lock-Methode loslassen, wartet 2 auf eine Sperre. – CARE

Verwandte Themen