2015-06-11 46 views
0

我正在爲我的移動站點編寫自動化代碼。在testng中使用@BeforeTest註釋問題

的Class1: -

public class Sample{ 

    @BeforeTest 
    public void createUser(){ 
    // code to create user 
    } 

    @Test 
    public void verifyUser(){ 
    // code to verify user 
    } 


    @AfterTest 
    public void deleteUser(){ 
    // code to delete user 
    } 

} 

Class1。我有不同的課程,如Class2,Class3,Class4

testing.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 

<suite name="Suite1" verbose="1"> 
    <test name="Regression1" parallel="false" preserve-order="true"> 
     <classes> 
      <class name="Class1"/> 
      <class name="Class2"/>   
      <class name="Class3"/> 
      <class name="Class4"/> 
     </classes> 
    </test> 
</suite> 

命令來運行: -

mvn -Dtests=testing.xml test 

當我上述命令運行,@BeforeTestClass1Class2Class3Class4首先調用。這意味着在運行任何測試之前首先創建4個用戶。然後只有Class1測試運行,然後Class2等。 Atlast @AfterTest正在運行(刪除所有用戶atlast)。

我不想要這種情況。

我需要以下方式來運行我的每個測試: -

  1. 創建的用戶
  2. 驗證的用戶
  3. 的用戶刪除

我需要Class1首先執行完全然後Class2等。

我需要做的testng註釋有什麼變化嗎?

回答

2

使用BeforeMethod而不是BeforeTestBeforeTest方法將在testng.xml中的<test>標記之前運行,而不是在@Test方法之前運行。 當然也可以用AfterMethod代替AfterTest

檢查我的答案另一個相似的問題:Difference between BeforeClass and BeforeTest in TestNG

+0

我在一個類中的兩個測試方法。如果我使用BeforeMethod,它會調用每個測試。我不需要它。我想要調用BeforeMethod或BeforeTest而不考慮所有測試方法,並且將AfterMethod或AfterTest稱爲所有測試方法的結束。 – karan

+1

如果您的測試類中有兩種測試方法,則使用'@ BeforeClass'和'@ AfterClass'。所以順序是:beforeClass(),testMethod1(),testMethod2(),afterClass()。 – peetya

+0

謝謝。它的工作。 – karan