@BeforeMethod在一个测试类中是否可以适用于另一个测试类中的方法?

时间:2018-04-10 03:05:21

标签: java selenium annotations testng

我有两个不同的测试类:

public class Class A{

@BeforeMethod
public void beforeEachMethod(){
//}

@Test(groups = "Login")
public void testA(){
//}
}

@public class Class B{

@Test(dependsOnGroups = "Login")
public void methodB(){
//}

}

但是现在只为A类中的方法调用@BeforeMethod。即使B类中的方法成功运行,也不会为B类中的方法调用它。

我希望在B类中的方法中调用公共类A中的@BeforeMethod。

我希望@BeforeMethod只存在于A类中,我会有其他几个类,如B类,C类,D类等。是否有可能为所有其他类调用一个@BeforeMethod ?

1 个答案:

答案 0 :(得分:2)

方法beforeEachMethod()属于类A,因此仅在执行类A中的测试时才会运行。如果您希望它在每次测试之前运行,您可以使用该方法创建一个抽象基类,并让每个测试类都从它继承

public class TestCase {

    @BeforeMethod
    public void beforeEachMethod() {
    }
}

public class A extends TestCase {

    @Test(groups = "Login")
    public void testA() {
    }
}

public class B extends TestCase {

    @Test(dependsOnGroups = "Login")
    public void methodB() {
    }
}