2016-10-20 102 views
0

我想用testng執行並行運行。 我正在嘗試4次並行運行測試。但它只運行一次。使用testng並行運行

的testng.xml

<suite name="My suite" parallel="methods" thread-count="4"> 
    <test name="Default test" group-by-instances="true"> 
    <classes> 
     <class name="org.com.DemoClass"/> 
    </classes> 
    </test> <!-- Default test --> 
</suite> <!-- Default suite --> 

Demo類。

public class DemoClass {  
    @Test 
    public void method1() throws InterruptedException { 
     long id = Thread.currentThread().getId(); 
     System.out.println("Before test-method. Thread id is: " + id); 
    } 
} 

請提供您寶貴的建議。

+0

添加線程數並不意味着您的測試方法將運行多次。這意味着它們有多個可用於執行的線程。在你的情況下,你只有一個方法在一次測試中只執行一次。對@Test註釋包括一個innvocationCount參數。閱讀文檔 - http://testng.org/doc/documentation-main.html#parallel-running – Grasshopper

+0

您能否提供一個示例來說明如何執行多個測試用例的並行運行? –

回答

0

你可以嘗試添加參數@Test註釋: @Test(threadPoolSize = 4, invocationCount = 4) 將調用你的測試從4個不同主題的四倍。

+0

但它只適用於1個測試用例。 假設我有多個測試用例,那麼我必須向所有測試用例添加參數。如果我必須增加/減少所有測試用例的運行次數。那麼改變將是一項重大任務。 –

0

如果您的需要是您編寫的每個@Test註釋方法都需要執行「n」次(並行或按順序),而無需您自己明確添加invocationCount屬性,您應該利用一個IAnnotationTransformer,利用它您可以隨時更改註釋方法的@Test值。您可以嘗試使用<listeners>標記或通過服務加載器通過套件文件注入此偵聽器。有關聽衆的更多一般信息,您可以查看我的this博客文章。