我们如何在Unit Testcase中编写两个@beforeTest方法?

时间:2011-05-19 15:50:18

标签: java unit-testing testng

我的测试用例中有两种方法。我想为每个测试方法使用两种不同的@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()方法执行?

1 个答案:

答案 0 :(得分:3)

您有几个选择:

  • 您可以使用Method参数声明@BeforeMethod,检查该方法的名称,如果它是unitTest1,则调用beforeMethod1(),如果它是unitTest2,则调用beforeMethod2()。这可能不是我的第一选择,因为如果你改变方法的名称它有点脆弱。

  • 将这些方法及其before方法放在不同的类中,可能共享一个共同的超类。