【问题标题】:Can @BeforeMethod present in one Test Class be applicable to a method in another Test Class?一个测试类中的@BeforeMethod 能否适用于另一个测试类中的方法?
【发布时间】:2019-10-31 15:57:03
【问题描述】:

我有两个不同的测试类:

public class Class A{

@BeforeMethod
public void beforeEachMethod(){
//}

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

@public class Class B{

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

}

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

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

我希望@BeforeMethod 仅出现在 A 类中,并且我将拥有其他几个类,例如 B 类、C 类、D 类等。是否可以为所有其他类调用一个 @BeforeMethod ?

【问题讨论】:

    标签: java selenium selenium-webdriver annotations testng


    【解决方案1】:

    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() {
        }
    }
    

    【讨论】:

    • 此解决方案不满足此条件:我希望 @BeforeMethod 仅出现在 A 类中
    • @cruisepandey 然后你必须明确地调用它。这些是您的选择。
    • 谢谢。我实际上已经有另一个课程,我正在扩展到每个测试课程。除了每个测试类使用的等待方法外,它还有 ExtentReport 方法和 Screenshot 方法。它不是一个抽象类。使用抽象类而不是我正在扩展的普通父类如何在这里提供帮助?我必须把它抽象化吗?
    • @SteroidKing666 基类是否抽象与您的问题无关,使其抽象与否有其他原因。
    • 就我而言,我总是需要扩展我的普通课程。在这种情况下如何使用抽象类?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2020-05-28
    • 2019-06-23
    相关资源
    最近更新 更多