簡體   English   中英

使用@BeforeClass以外的任何批注時獲取空指針異常

[英]Getting null pointer exception when using any annotation other than @BeforeClass

基類代碼:

protected WebDriver driver;
protected String URL = "https://www.example.com/";
public Signup signuppage;   

@BeforeGroups
 public void setup()
    {    
        System.setProperty("webdriver.chrome.driver","E:\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.navigate().to(URL);
        signuppage = PageFactory.initElements(driver, Signup.class);

    }

注冊頁面代碼:

protected WebDriver driver;

    public Signup(WebDriver driver) {
        this.driver = driver;
    }

測試用例代碼:

@Test(groups="SignupButton")
public void Signup_Disabled_Check() {

    signuppage.signupbtn();

}

堆棧跟蹤 :

Testcases.SignUpTest.Signup_Disabled_Check(SignUpTest.java:27)上的java.lang.NullPointerException有關單個測試結果,請參考C:\\ Users \\ mike \\ IdeaProjects \\ web \\ target \\ surefire-reports。 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)在org.apache.maven.lifecycle org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)上的.internal.MojoExecutor.execute(MojoExecutor.java:145)在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder .java:80),位於org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128),位於org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) )於org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)於org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)於org.apache.maven.DefaultMaven.execute(DefaultMaven.java: 106)在org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)在org.apache.maven.cli.MavenCli.execute(MavenCli.java:862) ache.maven.cli.MavenCli.main(MavenCli.java:197)在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl。 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)處的java.lang.reflect.Method.invoke(Method.java:497)處的invoke(DelegatingMethodAccessorImpl.java:43) org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)上的.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)在org.codehaus.plexus.classworlds.launcher.Launcher .main(Launcher.java:356)由以下原因引起:org.apache.maven.plugin.MojoFailureException:存在測試失敗。

當我將@BeforeClass用於setup() ,它可以正常工作。 但是,如果嘗試使用@BeforeSuite@BeforeGroups @BeforeSuite@BeforeGroups空指針異常。

我使用以下命令運行它:

mvn test -Dgroups=SignupButton

對於@BeforeGroups,您應該首先定義一個組,然后為注釋指定名稱。 這就是為什么您在此注釋中出現異常的原因。

@BeforeGroup(groups={"SignupButton"})

問題出在您的SignupPage類上。 它應該具有無參數或默認構造函數。 或者更好的實現方式如下:

signuppage = new Signup(driver);

然后在Signup類中創建如下的構造函數:

public Signup(WebDriver driver)
{
     PageFactory.initElements(driver, this);
}

編輯:在調試模式下運行您的代碼。 在該類的第27行上添加調試點,並查看其是否為null。 如果是這樣..然后在初始化程序塊中添加調試點,並查看控件何時進入那里,這應該告訴您流程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM