我正在尝试将正确实例化的对象传递给其他方法。这是我的代码:
public class CreateAndDeleteCollector {
private static WebDriver driver = new FirefoxDriver();
private LoginPage login;
private AdminRtcpCollectorPage rtcp;
private AdminFunctions admin;
//DesiredCapabilities capability = DesiredCapabilities.firefox();
//String hubUrl = "http://localhost:4444/wd/hub";
//WebDriver d = new RemoteWebDriver(new URL(hubUrl), capability);
@BeforeMethod
public void setup() throws Exception {
LoginPage login = new LoginPage(driver);
AdminRtcpCollectorPage rtcp = new AdminRtcpCollectorPage(driver);
AdminFunctions admin = new AdminFunctions();
}
@Test
public void newCollector() throws Exception {
login.login("192.168.1.100", "admin", "admin");
rtcp.goToRtcpCollectorPage();
rtcp.newRtcpCollector("test-1", "test", "test", "192.168.1.100");
}
@Test(dependsOnMethods = { "newCollector" })
public void deleteCollector() throws Exception {
admin.initialize(driver);
rtcp.goToRtcpCollectorPage();
admin.delete("test-1");
}
@AfterTest
public void logoutAndClose() {
Util.logout(driver);
driver.close();
}
}
当我使用 TestNG 运行它时,一旦我到达第一个测试方法,它就会出现 NullPointerException 错误,因为登录、rtcp 和管理员。我确定我误解了 @BeforeMethod 注释应该做什么。
我可以把我的所有声明和实例化放在一个设置方法之外,顺便说一句,这很好用,但是把它们放在一个方法中的原因是,当我在 RemoteWebDriver 行中评论时,我得到一个“默认构造函数不能处理异常类型。 ..“ 错误。
有没有人有什么建议?
我认为使用 TestNG 的工厂和数据提供者可能是一个答案,但我不确定如何将其应用于我的情况。