2017-10-20 95 views
2

我想用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處於閒置狀態,這可能抵消從使用這一解決方案的任何利益。

理想的解決方案將具有用於測試的公共線程池,例如基本單測試/並行=「方法」方法。

+0

[並行化testng中的類和方法]可能的副本(https://stackoverflow.com/questions/37874072/parallelizing-classes-and-method-in-testng) –

+0

此方法將允許我並行運行類有多個線程,但是如果一個測試在其他線程之前完成,它看起來像分配給它的線程將不會被使用。 我有兩個以上的類並行,如果我開始給每個測試的線程,我想我可能遇到問題 - 與10個類我將被限制爲每個4線程(總共40並行)。 我可能會停滯不前,等待1次測試,一次完成4個方法的運行,同時坐着36次空閒。理想的解決方案將具有用於測試的公共線程池。 – testngthrowaway

回答

0

您可以嘗試在parallel="methods"屬性附近添加thread-count="40"。如果你沒有,也給你的課程包名稱。

+0

對不起,我省略了我的例子pseudo-xml中的線程數標誌。 在我真正的XML文件中,我已經定義了它。 每個班的測試並行運行,沒有問題。 在上面的例子中,如果第1類和第2類都有40個方法,每個方法有40個線程, class1中的所有方法都是並行開始的,完成,然後開始在class2中的所有40個方法。 我理想上會喜歡某種方式讓class1和class2並行執行,比如parallel ='classes'標誌,但是有更多的線程。 – testngthrowaway

+0

好的。我認爲你的問題在這裏回答:https://stackoverflow.com/questions/37874072/parallelizing-classes-and-method-in-testng。 –

+0

謝謝。我可能會以妥協的方式走這條路線,但我擔心我需要按照測試方法的數量平均分配類別,否則某些測試可能會先完成並留下空閒線程。有沒有辦法確保測試之間的公共線程池? 我嘗試了在套件級別提供的40個線程的解決方案,但它開始了2個測試,每個線程有40個線程,共80個線程 - 嘗試並行運行。 我想我會遇到這種方法的問題 - 試圖最大限度地實現並行類的數量,但最大限度地減少空閒線程的可能性。 – testngthrowaway