Java @在测试之前,由于某种原因,它被忽略了

Java @在测试之前,由于某种原因,它被忽略了,java,automated-tests,cucumber,testng,Java,Automated Tests,Cucumber,Testng,我正在使用TestNG Selenium+Java运行Cumber套件测试,并获得Java.lang.NullPointerException 我意识到问题是由于某种原因,@BeforeTest被忽略,导致了空指针问题 我正在使用TestNG 7.0.0,但也尝试使用最新的测试版 @BeforeTest() public void setUp() { driver = Web.createChrome(); // it call a method that has the Chrome

我正在使用TestNG Selenium+Java运行Cumber套件测试,并获得Java.lang.NullPointerException

我意识到问题是由于某种原因,@BeforeTest被忽略,导致了空指针问题

我正在使用TestNG 7.0.0,但也尝试使用最新的测试版

@BeforeTest() 
public void setUp() {
    driver = Web.createChrome(); // it call a method that has the Chromedriver
}
Web.java

public class Web {

public static WebDriver createChrome() {

    System.setProperty("webdriver.chrome.driver", webdriver_path);

    WebDriver driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.get("http://the-internet.herokuapp.com/");

    return driver;
}
}
输出

java.lang.NullPointerException
at br.dsanders.steps.steps.accessing_the_Tnternet_herokuapp_com_website(steps.java:62)
at ?.Given accessing the Tnternet.herokuapp.com website(testing.feature:9)
尝试以下方法:

public class steps {


    WebDriver driver = null;

    public steps() {

        this.driver=Web.createChrome();

    }

@BeforeMethod() 
public void setUp() {
    driver.get("http://the-internet.herokuapp.com/");
  }
}
注意ClassName这里是步骤,如果您有其他类名,则更改类名和构造函数名

将@BeforeTest更改为@BeforeTest方法

资料来源:


第62行是否有driver=Web.createChrome,也分享createChromehi的功能,谢谢你的回答。问题更新为Web.javais steps.java 62文件行is->driver=Web.createChrome;嗯,对不起,我没有弄清楚62号线有什么问题。。因为如果我在uhumm之前使用JUnit annotation@运行,它会工作,是的,它现在工作得更好,但是我的@BeforeTest仍然没有被执行。。浏览器正在打开,因为正在从构造函数调用它。。。我以前评论过我的,但浏览器仍在打开:放置一些syso,看看它在执行周期中调用了什么,还是根本没有执行?您试图为每个测试调用驱动程序?您的理解有点混乱,test是针对TestNG的,而不是针对cumber的,在黄瓜和红豆中都存在前一种方法,前一种方法是检测红豆的有效方法。。。因此,您可能会遇到问题,因为执行顺序不同。您完全正确,我对TestNG和Cucumber感到困惑。。我以前只为@换过衣服,我所有的套房都很好。谢谢你的帮助!