0

我正在尝试将正确实例化的对象传递给其他方法。这是我的代码:

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 的工厂和数据提供者可能是一个答案,但我不确定如何将其应用于我的情况。

4

1 回答 1

2

你得到一个空指针异常,因为你在你的方法中重新声明了变量。只需从中删除“登录页面”

登录页面登录 = ...

使用登录 =...

于 2013-01-22T19:10:39.110 回答