如何使用testng实例化对象并传递给方法

时间:2013-01-22 18:28:08

标签: java selenium selenium-webdriver testng

我有一段时间试图将正确实例化的对象传递给其他方法。这是我的代码:

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运行第一个测试方法时,它会因为登录,rtcp和admin而出现NullPointerException错误。我确定我误解了@BeforeMethod注释应该做什么。

我可以将所有声明和实例化放在一个设置方法之外,顺便说一下,这很好用,但是将它们放在方法中的原因是因为当我在RemoteWebDriver行中发表评论时,我得到一个"默认值构造函数无法处理异常类型..."错误。

有没有人有任何建议?

我认为使用TestNG的工厂和数据提供者可能是一个答案,但我不确定如何将它应用于我的情况。

1 个答案:

答案 0 :(得分:2)

您正在获取空指针异常,因为您正在重新声明方法中的变量。只需从

中删除“登录页面”即可

登录页面登录= ...

使用login = ...