我想用testng並行運行測試,但我的配置有一些問題。testng並行測試 - 避免課堂分組
我有一個包含很多類文件的項目,每個文件都包含很多測試。
我目前正在使用parallel ='methods'標誌運行測試以最大化在給定時間運行的測試數量。
我的目標是避免同時運行同一類的測試,同時最大化並行測試的數量。
所以給出一個示例XML文件:
<suite>
<test parallel='methods' thread-count=40>
<classes>
<class>Class1</class>
<class>Class2</class>
</classes>
</test>
</suite>
並給予40個可用線程,我想在任何給定時間運行的40個試驗。
我已經使用的方法的攔截器來隨機化試驗的順序並使用Eclipse調試器我知道正確工作,並且每一類中的順序可被控制。
我的目標是這樣執行:
<Test from class1>
<Test from class2>
<Test from class1>
<Test from class2>
但不是每個類並行各自的測試順序運行如下:
<Test from class1>
<Test from class1>
<Test from class2>
<Test from class2>
Class2中只有開始執行時的Class1不再有任何要執行的測試。
我試過parallel ='classes',但是這給每個類1個線程。
是否可以執行隨機順序並保持併發測試運行的數量?
我想傳遞一個隨機化的方法列表,並排隊執行大致遵循該順序。
我已經嘗試將課程拆分成單獨的套件和測試,但是這並不符合並行運行的40個測試的目標,因爲類中每個測試方法都有不同數量的測試方法,每個測試方法的運行時間測試方法未知。
我的另一個想法是結合使用多重繼承,每個類的測試方法組合成1級班,但是,Java不支持多重繼承,以便將無法工作。
謝謝任何閱讀此內容或提供建議或幫助的人。
編輯:應對可能重複:
中的其他問題提出的解決方案將允許我在多線程並行運行的類,但如果測試別人之前完成,它看起來像分配給它的線程將不會被使用。我有超過2個類並行,如果我開始給每個測試的線程,我想我可能遇到問題 - 與10個類我將被限制爲每個4線程(總共40並行)。我可能會在1個測試卡住等待完成運行4種方法在時間36處於閒置狀態,這可能抵消從使用這一解決方案的任何利益。
理想的解決方案將具有用於測試的公共線程池,例如基本單測試/並行=「方法」方法。
[並行化testng中的類和方法]可能的副本(https://stackoverflow.com/questions/37874072/parallelizing-classes-and-method-in-testng) –
此方法將允許我並行運行類有多個線程,但是如果一個測試在其他線程之前完成,它看起來像分配給它的線程將不會被使用。 我有兩個以上的類並行,如果我開始給每個測試的線程,我想我可能遇到問題 - 與10個類我將被限制爲每個4線程(總共40並行)。 我可能會停滯不前,等待1次測試,一次完成4個方法的運行,同時坐着36次空閒。理想的解決方案將具有用於測試的公共線程池。 – testngthrowaway