TestNG中的继承和@BeforeSuite

Inheritence and @BeforeSuite in TestNG

我一直在研究 TestNG,我的一些代码出现了问题。这是代码:

public class Main {
public String baseurl ;
public WebDriver webdriver ;
protected Main(){

    //baseurl = "http://goodreads.com";
    //webdriver = new FirefoxDriver();

}

@BeforeSuite
public void setup(){

    baseurl = "http://goodreads.com";
    webdriver = new FirefoxDriver();
}

以上代码为基础class

@Test
public void do_login(){

    super.webdriver.get(super.baseurl);

这是继承的class

现在据我所知应该先执行 BeforeSuite 并且 baseurl 和 webdriver 的值应该被初始化为指定的值。但是我在上面的代码中得到了一个 NullPointerException。当我将变量分配为静态或者如果我在构造函数中初始化变量时,问题就解决了。但是为什么当我把它们放在方法中时它们没有被初始化(无论如何应该在 @Test 执行之前执行)?我缺少关于 java 的一些概念吗?请解释

您不需要将这两个 class 都包含在套件中。只应包括包含 class 的 @Test。我认为这就是问题所在。我也相信 @BeforeSuite 注释方法将被执行,而不取决于您 运行 测试的方式(作为 TestNG 方法或 TestNG 套件),因为无论如何都会创建默认套件以进行 运行 测试。