public void testSearch() {
beginAt("/");
assertFormElementPresent("q");
setFormElement("q", "HttpUnit");
submit("btnG");
assertLinkPresentWithText(searchLink);
clickLinkWithText(searchLink);
}
清單 6 的代碼連接到基本 URL,并相對于 / 開始瀏覽。然后它斷定頁面中包含一個名為 q 的表單元素 —— q 是 Google 主頁上查詢輸入文本框的名稱。下一條語句用值 HttpUnit 設置名為 q 的文本框!
再下一條語言提交表單上名為 btnG 的提交按鈕。(在 Google 的主頁上,名為 btnG 的按鈕是標簽為 Google Search 的按鈕。)表單是在這個對話中提交的,下一頁列出搜索結果。在結果頁面上,代碼首先檢查是否有一個鏈接的文本是 HttpUnit Home。如果該鏈接不存在,那么測試就以 AssertionFailedError 失敗。如果該鏈接存在,則測試執行的下一個操作是單擊鏈接!
運行示例應用程序
現在把示例應用程序投入使用當中:
下載示例應用程序 j-webunitsample.jar !
在一個目錄中解壓縮 j-webunitsample.jar。例如,如果把它釋放到 C:\temp 中,那么就要把源文件和類文件放在 C:\temp\com\jweb\test 中,而 setclasspth.bat 則放在 C:\temp 中!
編輯 setclasspath.bat:設置 JAR_BASE 指向包含所有必需 JAR 文件的目錄。例如,如果在 C:\temp 中釋放 jwebunit-1.2.zip 文件,那么將 JAR_BASE 設置為 C:\temp\jwebunit-1.2\lib!
打開命令行提示符,切換到 C:\temp 目錄!
執行 setclasspath.bat。這會設置執行測試用例所需的 CLASSPATH!
用命令 java com.jweb.test.GoogleTest "HttpUnit Home" 運行應用程序。
示例輸出
在執行了測試用例之后,會在命令行輸出一個測試用例報告。如果測試失敗,報告看起來如清單 7 中所示:
清單 7. 帶有斷言失敗的輸出
C:\temp>java com.jweb.test.GoogleTest "HttpUnit Hwee" .F Time: 5.338 There was 1 failure: 1) testSearch(com.jweb.test.GoogleTest)junit. framework.AssertionFailedError: Link with text [HttpUnit Hwee] not found in response. at net.sourceforge.jwebunit.WebTester. assertLinkPresentWithText(WebTester.java:618) at net.sourceforge.jwebunit.WebTestCase. assertLinkPresentWithText(WebTestCase.java:244) at com.jweb.test.GoogleTest.testSearch(GoogleTest.java:36) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at com.jweb.test.GoogleTest.main(GoogleTest.java:19) FAILURES!!! Tests run: 1, Failures: 1, Errors: 0
正如在清單 7 中可以看到的,可以用 HttpUnit Hwee 作為參數來執行測試用例。這個測試用例遇到斷言的地方會失敗,因為結果頁面中不包含帶有這個文本的鏈接。由此也就產生了junit.framework.AssertionFailedError!
清單 8 執行時用 HttpUnit Home 作為參數。測試用例找到一個帶有這個文本的鏈接,所以測試通過了:
清單 8. 成功測試的輸出
C:\temp>java com.jweb.test.GoogleTest "HttpUnit Home"
Time: 6.991
OK (1 test)
結束語
本文通過討論 jWebUnit 框架的一些突出特性和最重要的類,介紹如何用它創建簡潔的測試用例,讓您對 jWebUnit 框架有一個認識。jWebUnit 還有更多特性可以用在測試用例中。它支持測試 Web 頁面中的鏈接行數?梢詫ψ址、表或者帶有指定標簽的表單輸入元素是否存在于頁面上進行斷言。此外,jWebUnit 還可以處理 cookie (例如斷言存在某個 cookie、刪除 cookie 等。)測試可以對某個文本之后出現的特定文本的鏈接進行單擊。 如果想為 Web 應用程序構建快而有效的測試用例,jWebUnit可能是您最好的朋友。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/