driver.waitForPageToLoad("10000");
assertEquals(driver.getText("success"),
"The widget book-01 was successfully created.",
"test didn't return expected message");
}
@Parameters({"aut-addr"})
@Test
public void verifyCreationError(String appPath) throws Exception {
driver.open(appPath + "/CreateWidget.html");
driver.type("widget", "book-02");
driver.select("type", "book");
//definition explicitly set to blank
driver.type("definition", "");
driver.click("submit");
driver.waitForPageToLoad("10000");
assertEquals(driver.getText("failure"),
"There was an error in creating the widget.",
"test didn't return expected message");
}
@AfterClass
private void stop() throws Exception {
driver.stop();
}
}
目前為止,我已經定義了兩種足夠靈活的 Selenium 測試,可以對多個瀏覽器進行測試,并且還可以對多個位置進行測試,這對初學者非常有利。盡管如此,我還想獲得更高級點的應用,我開始考慮測試中的邏輯是否可重復使用。比如,如果對一行運行兩次 CreateWidgetUATest 測試類會怎樣?如何確保我的 Web 應用程序運行的是本地機器(或其他機器)上最新版本的代碼?
可重復的驗收測試
在執行 Selenium 測試時,必須運行 Selenium 服務器以及要檢驗的 Web 應用程序。言外之意,還必須運行應用程序中所有相關的架構依賴關系 —— 對于大多數 Java™ Web 應用程序來說,即 Servlet 容器和相關的數據庫。
正如在我的另一篇文章 repeatable system tests 中解釋的一樣,DbUnit 和 Cargo 是兩種我最喜歡的技術,可以在依賴數據庫的 Web 應用程序中實現邏輯重復。DbUnit 管理數據庫中的數據,而 Cargo 使容器管理以通用的方式實現自動化。下面幾節將向您展示如何結合使用 Selenium 和 TestNG 從而確保實現邏輯重復的驗收測試。
原文轉自:http://www.anti-gravitydesign.com