2017-03-15 53 views
0

我想運行具有4個不同類的testng.xml文件。我想在完成另一個之後運行每一個。所以當第一節完成後,第二節開始,第二節完成後,第三節開始執行。到目前爲止,我已經編寫了這段代碼,但它在同一時間觸發了所有類。即使我嘗試了parallel = false,但它不起作用。任何幫助將非常appreciated.Thanks如何一個接一個地運行TestNG類

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Smoke Test" parallel="false" preserve-order="true" verbose="2"> 
    <test name="Test 1"> 
     <classes> 
      <class name="class1"></class> 
     </classes> 
    </test> 
    <test name="Test 2"> 
     <classes> 
      <class name="class2"></class> 
     </classes> 
    </test> 
    <test name="Test 2"> 
     <classes> 
      <class name="class3"></class> 
     </classes> 
    </test> 
</suite> 

回答

0

這不是很相同的設置,但是我們用「未來」的屬性在我們的一些工作有順序處理:

<batch:job id="JOB_NAME" job-repository="jobRepository"> 
    <batch:step id="process1" next="process2"> 
     <batch:tasklet> 
      <batch:chunk> 
       processing info 
      </batch:chunk> 
     </batch:tasklet> 
    </batch:step> 

    <batch:step id="process2" next="process3"> 
     <batch:tasklet> 
      <batch:chunk> 
       processing info 
      </batch:chunk> 
     </batch:tasklet> 
     </batch:tasklet> 
    </batch:step> 

像這樣的東西可能爲你工作。

+0

這個xml如何在TestNG世界中工作?你能幫忙解釋一下嗎? –

0

爲什麼不只是將所有的測試類添加到相同的<test>標籤,然後運行它們?

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Smoke Test" parallel="false" preserve-order="true" verbose="2"> 
    <test name="Test 1"> 
     <classes> 
      <class name="class1"></class> 
      <class name="class2"></class> 
      <class name="class3"></class> 
     </classes> 
    </test> 
</suite> 

這基本上會在每個Test類中一個接一個地執行測試方法。您可以通過將System.out.println(Thread.currentThread().getId());添加到您的每個@Test方法來確認此情況。您應該看到正在打印的相同線程ID。

0

也許你在@Test註釋中使用「優先級」和「dependsOnGroups」。該參數對訂單更重要(請參閱6.10更改https://github.com/cbeust/testng/blob/master/CHANGES.txt)。

「優先」的例子。

此代碼:

public class Class1 { 

    @Test(priority = 1) 
    public void test1() { 
     System.out.println("Class1 test1"); 
    } 

    @Test(priority = 2) 
    public void test2() { 
     System.out.println("Class1 test2"); 
    } 

} 

public class Class2 { 

    @Test(priority = 1) 
    public void test1() { 
     System.out.println("Class2 test1"); 
    } 

    @Test(priority = 2) 
    public void test2() { 
     System.out.println("Class2 test2"); 
    } 

} 

有結果:

Class1 test1 
Class2 test1 
Class1 test2 
Class2 test2 

實施例與 「dependsOnGroups」。

此代碼:

public class Class1 { 

    @Test(groups = {"someGroup"}) 
    public void test1() { 
     System.out.println("Class1 test1"); 
    } 

    @Test(dependsOnGroups = {"someGroup"}) 
    public void test2() { 
     System.out.println("Class1 test2"); 
    } 

} 

public class Class2 { 

    @Test(groups = {"someGroup"}) 
    public void test1() { 
     System.out.println("Class2 test1"); 
    } 

    @Test(dependsOnGroups = {"someGroup"}) 
    public void test2() { 
     System.out.println("Class2 test2"); 
    } 

} 

有相同的結果:

Class1 test1 
Class2 test1 
Class1 test2 
Class2 test2 
0

測試名稱標籤應該是唯一的,我看到2個& 3級是相同的測試的名字,這就是爲什麼你正在看到問題。

如果您仍然看到該問題,請添加日誌/附加信息。

相關問題