開放源代碼測試框架 JUnit 和它的一些擴展(如 HtmlUnit)為 Web 應用程序測試帶來了許多好處,特別是在極限編程(extreme programming,XP)環境中,并且用 WebSphere Studio 可以將它們很好的集成。
引言
HtmlUnit 是 JUnit 的擴展測試框架之一。HtmlUnit 將返回文檔模擬成 HTML,這樣您便可以直接處理這些文檔了。HtmlUnit 使用例如 table、form 等標識符將測試文檔作為 HTML 來處理。它同樣需要遵循 JUnit 測試框架結構的 Java? 測試程序。
與 HttpUnit 相比較而言,HtmlUnit 并不直接基于 HTTP 請求/響應操作,但是需要您編寫基于 HTML 概念(如鏈接、窗體和表單等)的測試案例。HtmlUnit 的 Java API 可以提供 Java 對象,它可以將 HTML 文檔以 DOM 樹的形式進行遍歷。與 XMLUnit 對比,HtmlUnit 專門針對 HTML 文件使用,且將 HTML 當作 XML 處理。然而,您不能使用 HtmlUnit 來檢查兩份 XML 之間的差別,或是檢查由 XSLT 轉換而生成的 XML。HtmlUnit 還適合黑箱測試類型。它能為您帶來更多的選擇,以選取 Java 測試 API,并為 Web 應用程序測試維護您的測試案例和測試方式。如果應用程序 Web 頁面以 XHTML 方式創建,那么您仍然可以使用 HtmlUnit ,因為 XHTML 擁有良好的格式化文檔結構。
范例應用程序
為了示范 HtmlUnit 的使用,我們可以使用 ibm.com 網站上的雇員目錄應用程序。WebSphere? J2EE 應用程序和 IBM? Web 頁面遵循 XHTML web 標準。IBM 以外的人員可以搜索 IBM 雇員的聯系信息,只要他們知道員工的姓和國家位置。
測試 IBM 雇員目錄
- 打開 IBM 主頁 http://www.ibm.com ,并單擊底部的 Contact 。
- 在 Contact IBM 頁面右邊稍下的位置,單擊 Employee directory 。
- 在 Employee directory 頁面,從下拉列表中選擇國家,輸入 Last name 以及 First name ,并單擊 Submit 。
- 驗證搜索結果。需要驗證的內容可以是頁腳、元標簽和頁首等等。
//application home homePage = (HtmlPage)webClient.getPage(url); assertNotNull(homePage); |
//application link click HtmlAnchor anchor = homePage.getAnchorByHref(ApplicationURLs.APP_SEARCH_PAGE); assertNotNull(anchor); try { employeesSearchPage = (HtmlPage) anchor.click(); assertNotNull(employeesSearchPage); } catch (IOException ioe) { ioe.printStackTrace(); } |
//set the parameters for search List formList = (List) employeesSearchPage.getAllForms(); HtmlForm searchForm = (HtmlForm) formList.get(1); final HtmlSelect select = ( HtmlSelect )searchForm.getSelectsByName( "search_country" ).get( 0 ); select.setSelectedAttribute("ca", true); //select.setSelectedAttribute("all", true); final HtmlHiddenInput hiddenInput1 = (HtmlHiddenInput) searchForm.getInputByName("country"); hiddenInput1.setValueAttribute("us"); final HtmlHiddenInput hiddenInput2 = (HtmlHiddenInput) searchForm.getInputByName("language"); hiddenInput2.setValueAttribute("en"); final HtmlTextInput inputLastName = (HtmlTextInput)searchForm.getInputByName("lastname"); inputLastName.setValueAttribute("Shafi"); final HtmlTextInput inputFirstName = (HtmlTextInput)searchForm.getInputByName("firstname"); inputFirstName.setValueAttribute("Marie"); imageInput = (HtmlImageInput)searchForm.getInputByName("Submit"); try { searchResultPage = (HtmlPage)imageInput.click(); assertNotNull(searchResultPage); Document resultsPage = searchResultPage.getDocument(); //page content verification based on XML //It depends on html documentation structure its self, CommonTests.testResultsWhitespaceName(resultsPage, "Employee Directory results page", "Shafi", "Marie"); } catch (Exception e) { } |
用 WebSphere Studio 進行測試
WebSphere Studio V5 以及以后的版本都與 JUnit 測試框架緊密集成。為了讓你的測試案例能在 WebSphere Studio 上運行,您需要遵循基本的 JUnit 測試案例編程 API。對于每個案例來說,您都需要從 TestCase 擴展您的測試類。然后實現 setUp() 、 testXXXX() 和 tearDown() 方法。為了能讓你的測試案例在大型的項目中可維護并可重復使用,請遵循面向對象設計和其他標準實踐。
在您開始測試之前,需要有一個最小化的 HtmlUnit 二進制 JAR 文件。在指定的目錄中提取 lib。您可以從 SourceForge 下載穩定的 HtmlUnit 1.2.3 版本。
創建獨立的范例 Java 項目
選擇 File =>New =>Other 。在新的窗口中,選擇 Java =>Java project 。
圖 1. 范例 Java 項目。
為使用 HtmlUnit 配置 Java 構建類路徑
在 new Java project 對話框中,選擇 Libraries 選項卡并從 lib 目錄添加外部 JAR 文件。對于 HtmlUnit 包,添加 JUnit.jar ,這在 WebSphere Studio plugin 目錄中可以找到。
圖 2. 測試案例構建類路徑配置
文章來源于領測軟件測試網 http://www.kjueaiud.com/