UML软件工程组织

 

 

用 HtmlUnit 和 WebSphere Studio 测试 Web 应用程式

2008-03-28 作者: Christopher Wang,Ning Yan 来源: IBM

 
在本文中:
開放原始程式碼測試框架 JUnit 和它的一些擴展(如 HtmlUnit)為 Web 應用程式測試帶來了許多好處,特別是在極限編碼(extreme programming,XP)環境中,並且用 WebSphere Studio 可以將它們作很好的整合。

引言

HtmlUnit JUnit 的擴展測試框架之一。HtmlUnit 將回傳文件類別比成 HTML,這樣您便可以直接處理這些文件了。HtmlUnit 使用例如 table、form 等 Tag 將測試文件作為 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 員工目錄

  1. 打開 IBM 主頁 http://www.ibm.com,並選擇底部的 Contact
  2. 在 Contact IBM 頁面右邊稍下的位置,選擇 Employee directory
  3. 在 Employee directory 頁面,從下拉式選單中選擇國家,輸入 Last name 以及 First name,並按下 Submit
  4. 驗証搜尋結果。需要驗証的內容可以是頁尾、標籤和頁首等等。

//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 項目。
範例 Java 項目

為使用 HtmlUnit 配置 Java 建構類別路徑

在 new Java project 對話框中,選擇 Libraries 並從 lib 目錄新增外部 JAR 文件。對於 HtmlUnit Package,增加 JUnit.jar,這在 WebSphere Studio plugin 目錄中可以找到。

圖 2. 測試專案建構類別路徑配置
測試專案建構類別路徑配置

輸入範例應用程式測試程式碼

下載文章最後的 Download HtmlUnit_JavaSrc.zip 並將範例應用程式導入到您的 Java 項目。

執行測試專案

選取您需要進行測試的測試專案或測試序列,按下 Run => Run as => JUnit

圖 3. 執行 JUnit
執行 JUnit

檢查測試結果

選擇 WebSphere Studio 中的 JUnit 視圖,您便可以查看執行結果了。

圖 4.JUnit HtmlUnit 測試結果
JUnit HtmlUnit 測試結果

透過 Ant 腳本執行測試


    <target name="htmlunit" depends="compile">
    	<junit printsummary="yes" haltonfailure="yes">
    		<classpath refid="junit.classpath"/>
      		<formatter type="plain"/>
      		<test name="sample.testcase.IBMEmployeeDirectoryPageTest"
      			haltonfailure="no" outfile="test-result" todir="${build.dir}">
      		</test>
    	</junit>
    </target>

如果您尚未下載 HtmlUnit_JavaSrc.zip,請轉至本文的底部點選 Download HtmlUnit_JavaSrc.zip 下載該文件。並修改 build.xml 文件,指定 build.dir、junit.jar 和 htmlunit.libdir 參數。

  1. 使用 Ant 配置 WebSphere Studio。選擇 Window => Preferences 並點選 Properties。將 build.compiler 設定為 org.eclipse.jdt.core.JDTCompilerAdapter。
    圖 5. 為 Ant 進行 WebSphere Studio 設定
    為 Ant 進行 WebSphere Studio 設定
     
  2. 執行 Ant 腳本,執行結果將顯示在 WebSphere Studio 控制台中。在 build.xml 按下右鍵並選擇 Run Ant。執行結果將顯示在控制台和 Ant 輸出文件中。
    圖 6. WebSphere Studio Ant 執行時設定
    WebSphere Studio Ant 執行時設定

結語

HtmlUnit 擴展了 JUnit Java 測試框架,為 Web 應用程式測試提供了更多的選擇。HtmlUnit 可以使您透過使用 HTML Web 頁面概念來測試 Web 應用程式,並且當您的 Web 內容遵循 XHTML 標準時,它也能良好的執行。

下載

名稱 檔案大小 下載方式
HtmlUnit_JavaSrc.zip
7 KB

參考資料

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号