2013-08-28 22 views
3

我想按順序執行測試方法。我在testng.xml中使用了保持順序設置爲true的類。按預期順序運行相關和獨立的測試方法

<test name="group-test" preserve-order="true" > 
    <classes> 
     <class name="com.dependency.ClassA"> 
      <methods> 
       <include name="create"/> 
       <include name="enter"/> 
       <include name="delete"/> 
      </methods> 
     </class> 
    </classes> 
</test> 

和我的測試類

public class ClassA { 


@Test() 
public void Create() throws Exception 
{ 
    System.out.println("in method create"); 

} 
@Test(dependsOnMethods= "Create") 
public void Enter() throws Exception 
{ 
    System.out.println("in method Enter"); 

} 
@Test() 
public void delete() throws Exception 
{ 
    System.out.println("in method delete"); 

} 

執行測試後,我的輸出是
的方法創建,
的方法刪除,
在輸入方法

但我要先執行「創建」,然後「輸入」,然後「刪除」的方法。這裏刪除是一個獨立的測試方法。

我在google group question上閱讀,其中Cedric Beust提到您可以使用依賴關係在testng.xml中明確包含測試方法。我不明白爲什麼這是執法?如果我想以我想要的任何順序一起執行獨立和相關的測試方法,該怎麼辦?我觀察到獨立的方法首先被執行,然後是依賴的方法。


理想情況下,依賴關係不應該用於維護順序,而應該在上一個方法失敗時跳過測試。 TestNG所執行的這種操作造成了很多麻煩!

+0

@CedricBeust如果您正在閱讀本文。請提出解決方案。缺乏這個功能實際上阻礙了我們實施基於TestNG的完整測試套件的方式,這套測試套件已經開發出來,但無法執行! –

+1

dependsOnMethods將覆蓋您在XML中指定的任何內容。如果您需要嚴格排序,請對所有方法使用dependsOnMethods。 –

+0

@CedricBeust對於嚴格排序的所有方法,我無法使用dependsOnMethods。我只想在真正需要時使用依賴關係。有沒有可以爲此提供的解決方案?在創建TestNG時,爲什麼沒有想到這個功能有什麼特別的原因?這是一個非常基本和明顯的要求。 –

回答

1

我正在與testng的同一個專業(我必須說明白的)缺乏努力。我迄今發現的最佳解決方案是使用優先事項。 EG @Test(優先級= 10),然後下一個測試@Test(優先級= 20)等。我發現迄今爲止的文檔和Internet搜索都使用@Test(priority = 1),然後@Test(priority = 2),但是你會遇到明顯的未來維護問題,即每次在某處添加一個測試時,必須對所有測試進行重新編號...因此,這種解決方案的10,20等等要好得多,因爲它至少允許您在test1和test2之間添加@Test(優先級= 11),12等。它確實有效,我已經驗證。對我們來說幸運的是testng沒有執行1,2,3或者我們真的會遇到麻煩!哦,順便說一句,如果你有組和方法依賴(你不應該在所有測試中使用,除非需要!),那麼它看起來像@測試(優先級= 10,組=「登錄」),@測試(優先級= 20 ,groups =「login」)等等。此外,似乎你已經知道,但對於其他人可能想知道的是,記住如果依賴性被用來設置測試運行順序,那麼如果一個失敗,那麼所有的測試都被跳過 - 這完全不是你想要的。無論如何,希望這有助於讓你脫身,至少在更好的解決方案出現之前。祝你好運!

+0

我剛纔讀到了你的問題,你現在遇到了優先級問題! :P我努力不去查看TestNG源代碼並編寫補丁。 –

相關問題