Java 通过Selenium在JUnit 5中使用@Before注释的NullPointerException

Java 通过Selenium在JUnit 5中使用@Before注释的NullPointerException,java,selenium,selenium-webdriver,nullpointerexception,junit5,Java,Selenium,Selenium Webdriver,Nullpointerexception,Junit5,下面您可以看到@Before startBrowser()创建webDriver public WebDriver webDriver; @Before public void startBrowser(){ System.setProperty("webdriver.gecko.driver", driverPath); FirefoxOptions firefoxOptions = new FirefoxOptions();

下面您可以看到@Before startBrowser()创建webDriver

public WebDriver webDriver;


    @Before
    public void startBrowser(){

        System.setProperty("webdriver.gecko.driver", driverPath);


        FirefoxOptions firefoxOptions = new FirefoxOptions();
        firefoxOptions.setCapability("marionette", true);


/* ---> */ webDriver = new FirefoxDriver(firefoxOptions);


    }


    @Test
    void navigateToUrl() {
        webDriver.get("http://demo.guru99.com/selenium/guru99home/");
    }
但我在@Test void navigateToUrl()中得到一个空指针

但是@Before应该运行正常吗

使用注释公共void方法 @Before导致该方法在测试方法之前运行

@然而,在这之前,每种方法都是有效的。但我只想用@Before!

此错误消息

java.lang.NullPointerException
    at demo.TestTest.navigateToUrl(TestTest.java:42)
    .
    at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
…表示引发了NullPointerException

根据中的文档,最常见的注释有:

  • @测试
  • @ParameterizedTest
  • @RepeatedTest
  • @DisplayName
  • @beforeach
  • @AfterEach
  • @BeforeAll
  • @毕竟
  • @Tag
  • @已禁用
快照:


解决方案
JUnit5中不支持As
@Before
注释,您必须将其替换为JUnit5中@Yeahseol注释的
@beforeach
@BeforeAll


@JUnit5不支持Before

您使用的junit版本是什么?在版本5和更高版本中,您应该在每个之前使用
@,而在其他版本中,您将在
@之前使用
@yeahseol是正确的(因为您使用的是Junit5,如堆栈跟踪中所示)。为什么必须在
之前使用
@?
java.lang.NullPointerException
    at demo.TestTest.navigateToUrl(TestTest.java:42)
    .
    at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)