我一直在研究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的值应初始化为指定值。但是我在上面的代码中得到了一个NullPointerException。当我将变量赋值为static或者在构造函数中初始化变量时,问题得以解决。但是为什么当我把它们放在方法中时它们没有被初始化(它应该在@Test执行之前执行)?我缺少一些关于java的概念吗?请解释
答案 0 :(得分:1)
您不需要在套件中包含这两个类。只应包含@Test包含的类。我认为这就是问题所在。我也相信@BeforeSuite注释方法的执行不依赖于你运行测试的方式(如TestNG方法或TestNG套件),因为无论如何都会创建默认套件以运行测试。