TestNG中的继承和@BeforeSuite

时间:2015-02-26 06:04:33

标签: java inheritance selenium-webdriver 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();
}

以上代码属于基类

@Test
public void do_login(){

    super.webdriver.get(super.baseurl);

这是继承的类

现在我知道应首先执行BeforeSuite,并且baseurl和webdriver的值应初始化为指定值。但是我在上面的代码中得到了一个N​​ullPointerException。当我将变量赋值为static或者在构造函数中初始化变量时,问题得以解决。但是为什么当我把它们放在方法中时它们没有被初始化(它应该在@Test执行之前执行)?我缺少一些关于java的概念吗?请解释

1 个答案:

答案 0 :(得分:1)

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