2013-08-27 52 views
0

我有很多組,我希望能夠並行運行所有或子集,例如, -Dgroups = a,b,...我有一個用@BeforeGroups註釋標註的方法,需要在運行一個組之前做一些行爲。我看到的行爲是,當我運行兩個特定的組,一個是三個測試,另一個是兩個時,第一組的前兩個測試運行,然後是第二組的兩個測試,然後是第一組的最後一個方法。 (按照定義測試的類名的字母順序)這些方法分佈在不同的類中。請幫忙!TestNG + Groups + BeforeGroups按字母順序運行方法

的testng.xml

<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" > 
<suite name="API Tests"> 
    <test name="all"> 
     <groups> 
      <run> 
       <include name="a" /> 
       <include name="b" /> 
       <include name="c" /> 
       <include name="d" /> 
       <include name="e" /> 
      </run> 
     </groups> 
     <packages> 
      <package name="package.*" /> 
     </packages> 
    </test> 
</suite> 

執行順序(用縮寫混淆)

Class: E; Method: testF; Group: a 
Class: I; Method: testI; Group: a 
Class: S; Method: testSH; Group: b 
Class: S; Method: testSI; Group: b 
Class: T; Method: testF; Group: a 

注:我已經嘗試設置線程1,不能解決測試/組的順序執行。

回答

1

您需要包含線程數。如果你有2組&需要在2個並行線程運行它們時,XML將是 -

<suite name="FooSuite" parallel="tests" thread-count="2"> 
<test name="Group1"> 
    <groups> 
     <run> 
      <include name="1" /> 
     </run> 
    </groups> 
    <packages> 
     <package name="package.*" /> 
    </packages> 
</test> 
<test name="Group2"> 
    <groups> 
     <run> 
      <include name="2" /> 
     </run> 
    </groups> 
    <packages> 
     <package name="package.*" /> 
    </packages> 
</test> 

並行運行時允許測試,類&方法。您可以相應地設計您的XML以滿足您的要求。

+0

這不起作用。上面提到的測試執行行爲仍然存在。我嘗試了一個線程,其中有一個測試,它有兩個組,它們具有相同的錯誤行爲。 – kfox

+0

這是預期的行爲。如果您嘗試了一個包含2個組的測試,它將依次運行它們,因爲在測試中設置了並行標誌。請嘗試在我的答案中提到的那一個,然後降級我的答案 – praneel

+0

我嘗試了相同的結果,也許我不明白你的回答。我想運行兩個組,所以我只包含Group1And2並設置parallel =「tests」thread-count =「1」。 – kfox