2013-01-22 44 views
0

我有一段時間試圖讓對象正確實例化傳遞給其他方法。這裏是我的代碼:如何實例化對象並將其傳遞給使用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(); 
} 
}  

我,只要我得到的第一個測試方法是錯誤與一個NullPointerException運行這個用TestNG因爲登錄,RTCP和管理。我確信我誤解了@BeforeMethod註釋應該做什麼。

我可以把所有的聲明和實例化在一個setup方法之外,這很好用,但是把它們放在方法中的原因是因爲當我在RemoteWebDriver中註釋時,我得到一個「Default constructor can not處理異常類型...「錯誤。

有沒有人有任何建議?

我認爲使用TestNG的工廠和dataprovider可能是一個答案,但我不知道如何將它應用於我的情況。

回答

2

你正在得到一個空指針異常,因爲你在你的方法中重新聲明瞭變量。剛剛從

Loginpage登錄去掉 「Loginpage」= ...

使用登錄= ...

+0

嗯,這是很簡單的:)謝謝 –

相關問題