簡體   English   中英

TestNG的課程運行混亂(在測試類別之間跳過)

[英]TestNG is Running Classes Out of Order (Skipping Between Classes of Tests)

我在使用TestNG Selenium Webdriver 2.0和Java時遇到問題。 我設置了斷點,並看到了最奇怪的行為。
我有幾個包含測試組的類文件。 每個類都從初始化一些對該類中所有測試全局的變量開始,包括對另一個初始化Webdriver的類的調用。 接下來是@BeforeClass,接下來是我的@Test測試。 我正在從testng.xml文件運行類。

最近在調試問題時,我發現在運行時,testNG會執行以下操作:

  1. 初始化class1中的全局變量和webdriver
  2. 然后跳到class2的頂部並執行相同的操作
  3. 然后跳回到class1 @BeforeClass
  4. 然后在class1 5中運行測試,然后跳回到class2

@BeforeClass並從那里結束...

為什么testNG會這樣表現。 我已經嘗試了逐步操作,但是testNG是編譯后的代碼,因此我無法弄清楚為什么在上述步驟2之前它不能以class1結尾。 在class1中的webdriver之后立即初始化class2中的webdriver產生了一個奇怪的問題,即在不關閉class2的驅動程序的情況下,我無法在class1的末尾執行driver.close()。 並且由於class2已經具有其全局變量並且已初始化其webdriver,因此當class1測試完成后testNG最終移回到class2時,將忽略其webdriver初始化。 同樣在運行時,我可以看到一個Web瀏覽器打開了一個路徑(對於class1),然后轉到了另一個路徑(對於class2)。 只是不對。 有什么想法為什么testNG以這樣的順序運行?

事實證明,導致testNG在類之間跳過的問題是我在類級別而不是在方法(@Test)中初始化變量,類等。 您可以聲明NULL對象,但除了方法內的任何地方,都不能將它們初始化為任何值。 這包括webdriver! 因此,基本上是一種設置方法,需要對類定義范圍的任何say變量都需要在類中首先運行。 希望這可以幫助某人節省時間。 謝謝-JR

you can prioritize that runs in sequence in TESTNG:

you can define in annotations simply,


@Test(priority=0) // this will run first test
public void methdone()
{
}

@Test(priority=1)
public void methodtwo()
{
}
@Test(priority=2) // this will run as third test,
public void methodthird()
{
}
hope it helps !!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM