Как мы можем написать два метода @beforeTest в Unit Testcase?

У меня есть два метода в моем тестовом примере. Я хочу использовать два разных метода @BeforeTest или @BeforeMethod для каждого из моих тестовых методов.

Я написал два метода @BeforeMethod в своем классе модульного теста, но оба метода выполняются при каждом выполнении метода модульного теста.

Итак, как мы можем объявить методы @BeforeMethod для выполнения для конкретных тестовых методов по отдельности?

Мой класс модульного тестирования выглядит так:

public class MyUnitTest{

  String userName = null;
  String password = null;

  // Method 1
  @Parameters({"userName"})
  @BeforeMethod
  public void beforeMethod1(String userName){
      userName = userName;
  }

  @Parameters({"userName"})
  @Test
  public void unitTest1(String userNameTest){
      System.out.println("userName ="+userName);
  }


  // Method 2
  @Parameters({"userName","password"})
  @BeforeMethod
  public void beforeMethod2(String userName,String password){
      this.userName = userName;
      this.password = password;
  }

  @Parameters({"userName","password"})
  @Test
  public void unitTest2(String userNameTest,String passwordTest){
      System.out.println("userName ="+this.userName+" \t Password ="+this.password);
  }

}

Есть ли способ сделать:

  1. Метод beforeMethod1 выполняется только для метода unitTest1()?
  2. Метод beforeMethod2 выполняется только для метода unitTest2()?

person Satya    schedule 19.05.2011    source источник


Ответы (1)


У вас есть несколько вариантов:

  • Вы можете объявить @BeforeMethod с параметром Method, проверить имя этого метода и, если это unitTest1, вызвать beforeMethod1(), а если это unitTest2, вызвать beforeMethod2(). Это, вероятно, не будет моим первым выбором, так как это немного хрупко, если вы измените имена своих методов.

  • Поместите эти методы и их метод before в отдельные классы, возможно, используя общий суперкласс.

person Cedric Beust    schedule 19.05.2011