我正在使用硒建立测试。我试图遵循一些教程并在这里查看信息,但我无法弄清楚为什么我的测试无法正常运行。
我有以下测试设置类
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import java.util.Arrays;
public class TestSetUp {
private WebDriver driver;
public WebDriver getDriver() {
return driver;
}
private void setDriver(int type, String url) {
switch (type) {
case Config.FIREFOX_DRIVER:
System.out.println("Setting drivers for Firefox...");
driver = initFireFoxDriver(url);
break;
default:
System.out.print("invalid browser type");
}
}
private static WebDriver initFireFoxDriver(String url) {
System.out.println("Launching Firefox browser...");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.navigate().to(url);
return driver;
}
@BeforeClass
public void initializeTestBaseSetup(int type, String url) {
try {
setDriver(1, "google.com");
} catch (Exception e) {
System.out.println("Error....." + Arrays.toString(e.getStackTrace()));
}
}
@AfterClass
public void tearDown() {
driver.quit();
}
@Test
public void startTests() {
System.out.println("Starting Tests...");
}
}
然后我有一个测试类来登录这里
public class LoginPageTest extends TestSetUp {
private WebDriver driver;
@Before
public void setUp() {
driver = getDriver();
}
@Test
public void verifyLoginInFunction() {
System.out.println("Log In functionality being tested...");
LoginPage loginPage = new LoginPage(driver);
Assert.assertTrue("The url is incorrect", loginPage.verifyURL());
Assert.assertTrue("Title did not match", loginPage.verifyLoginTitle());
Assert.assertTrue("Error message did not match", loginPage.verifySignIn());
Assert.assertTrue("\'Forgot Password?\' link is missing", loginPage.verifyForgotPassword());
Assert.assertTrue("Create Account setting not working", loginPage.verifyCreateAccount());
Assert.assertTrue("Additional Licence Key setting not working", loginPage.verifyLicencing());
HomePage homePage = loginPage.signIn(Config.STUDENT, Config.STUDENTPASS);
Assert.assertTrue("Login did not work", homePage.verifyURL());
}
}
我当前的出局是
开始测试......
正在测试的登录功能......
java.lang.NullPointerException
在 verifyURL(LoginPage.java:20)
在 verifyLoginInFunction(LoginPageTest.java:28)
开始测试......
处理以退出代码-1
结束
我确实忽略了我的软件包的路径,但我无法弄清楚为什么浏览器无法启动。它永远不会执行initializeTestBaseSetup,因此它无法进入设置的其余部分。任何帮助或链接将不胜感激。
修复:我需要添加和运行xml文件而不是测试套件。这是我的testing.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Page Object test example">
<parameter name="url" value="http://google.com/"/>
<parameter name="type" value="firefox"/>
<test name="sample test">
<classes>
<class name="LoginPageTest"/>
</classes>
</test>
</suite>
答案 0 :(得分:0)
根据the docs,@BeforeClass
方法应该是static
,并且应该没有参数:
public static void initializeTestBaseSetup() {
// ...
}
这是必要的,因为顾名思义,这是在对象本身被实例化之前调用的。而且由于框架无法知道为参数提供什么,因此无法将任何内容传递给该方法。
看起来你的初始化只是被JUnit忽略了。 (这并不表示任何形式的错误或警告?)
这是否直接导致你的空指针异常,我们不能说。这是在verifyURL
课程的LoginPage
方法的第20行进行的,该问题并未包括在内。虽然这似乎是一个合理的结论。