2015-06-11 6 views
0

Я пишу код автоматизации для своего мобильного сайта.Проблема при использовании аннотации @BeforeTest в testng

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 

, когда я запускаю выше команды, @BeforeTest из Class1, Class2, Class3, Class4 называют первым. Это означает, что перед запуском любого теста создаются 4 пользователя. Затем только Class1 Тест работает Class2 и так далее. Atlast @AfterTest из всех классов (удаление всех пользователей).

Я не хочу этого сценария.

мне нужен следующий способ запустить мой каждый тест: -

  1. создать пользователя
  2. проверить пользователя
  3. удалить пользователя

мне нужен мой Class1 полностью выполнен первый затем Class2 и так далее.

Есть ли изменения в аннотации для testng, которые я должен делать?

ответ

2

Использовать BeforeMethod вместо BeforeTest. Метод BeforeTest будет работать до вашего тега <test> в testng.xml, а не перед вашим методом @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

Смежные вопросы