2016-04-25 73 views
0

我正在探索TestNG註釋。我碰到下面的情形,假設我有3個測試,我已經指定的優先級爲2周的測試,一種是沒有優先權註釋默認測試TestNG方法執行默認優先級序列

@Test(groups={"smoke","sanity"},priority=1) 
public void TestCase2(){ 
    System.out.println("TestCase2"); 
} 

@Test(priority=0) 
public void TestCase3(){ 
    System.out.println("TestCase3"); 
} 

@Test() 
public void TestCase1(){ 
    System.out.println("TestCase1"); 
} 

輸出:TestCase1 TestCase3 TestCase2

即使我改變TestCase3的序列& TestCase1,輸出相同。

我知道

如果你不提的優先級,將採取所有的測試用例爲「優先= 0」,然後執行。

問題是爲什麼TestCase1在TestCase3之前執行?

回答

0
@Test(priority=0) 
public void TestWithZeroPriority(){} 

@Test 
public void TestWithDefaultPriority(){} 

TestNG認爲兩個Testcases具有相同的優先級簽名。所以測試用例TestNG的內部解釋如下

@Test(priority=0) 
public void TestWithZeroPriority(){} 

@Test(priority=0) 
public void TestWithDefaultPriority(){} 

所以沒有保證哪一個先得到執行。

1

如果您不配置它,TestNG默認未指定默認順序。它可能會在版本之間改變。

在你的例子中,觀察結果是正確的,但預期的結果也可能是正確的。

+0

是啊!那就是這個!即使我將默認優先級0賦予TestCase1並從TestCase3中刪除優先級0,輸出也保持不變。沒有結論。 –

+1

我記得,默認情況下優先級爲0。設置爲0或沒有結果會產生相同的結果 – juherr

1

使用testng可以指定腳本執行不同測試用例的順序。如果沒有在腳本中分配優先級,只提及所有測試用例的@Test,那麼腳本可能會隨機執行所有不同的測試,並可能導致腳本失敗。例如,你有登錄測試,那麼你有填寫驗證的用戶個人信息。因此,在這種情況下,如果您沒有爲登錄測試和用戶個人信息指定優先級,那麼腳本可能會先執行用戶個人信息填充測試,然後再進行登錄測試,在這種情況下,腳本失敗,因爲登錄屏幕腳本正在執行用戶個人信息填寫測試。

而是,如果您爲登錄測試分配優先級@Test(優先級= 0),然後對用戶個人信息進行@Test(優先級= 1)填充測試,則腳本必須先執行優先級= 0,優先級= 1。

當您想要生成測試執行報告時,testNG註釋@Test(priority = 0),@Test(priority = 1)等非常重要。

+0

感謝您的幫助解釋:)。但是我想知道你是否提到了優先級= 0,並且沒有優先級屬性,哪個測試應該先執行?我得出的結論是,無論您提供優先權屬性還是優先權= 0,都將具有與TestNG相同的簽名。 –