[英]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.