另一個重要的類是 net
sourceforge
jwebunit
TestContext
它為測試創建上下文
可以用這個類來處理像 cookie
會話和授權之類的信息
表
顯示了這個類的一些重要方法
表
net
sourceforge
jwebunit
TestContext 類的重要方法
下載 jWebUnit在 Eclipse 中配置 jWebUnit JWebUnit 是用純 Java 代碼實現的
所以可以以 JAR 文件的形式獲得它 (請參閱 參考資料
從中獲得下載鏈接)
在完成下載之後
請按以下步驟在 Eclipse 平台上配置 JWebUnit 庫
把下載的文件 jwebunit
zip 釋放到臨時目錄中(假設是 C:\temp)
在 Eclipse 中創建新 Java 項目
將其命名為 jWebUnit
右擊 Package Explorer 視圖中的 jWebUnit 項目
然後選擇 Properties
單擊 Java Build Path
單擊 Libraries 標簽中的 Add External JARs
浏覽到 C:\temp\jwebunit
\lib 目錄
選擇這個目錄中的所有 JAR 文件
單擊 OK
現在可以在 Eclipse 中的 jWebUnit 項目下開發 jWebUnit 測試用例了
構建示例應用程序 現在就可以查看 jWebUnit API 的實際應用了
我將帶您研究一個示例應用程序
幫助您更好地理解 jWebUnit 的真正威力
這個應用程序是一個測試用例
用於打開一個 Google 搜索頁面並搜索文本 HttpUnit
應用程序需要測試以下場景
打開 Google 主頁
確定該頁包含一個名為 q 的表單元素
(在 Google 的主頁上
名為 q 的文本框是接受用戶查詢輸入的文本框
)應用程序用這個元素輸入搜索參數
在搜索文本框中輸入字符串 HttpUnit Home
並提交表單
獲得結果頁
並確定該頁面包含的鏈接中包含文本 HttpUnit Home
單擊包含文本 HttpUnit Home 的鏈接
現在測試場景已經就緒
可以編寫 Java 應用程序
用 jWebUnit 實現這些需求了
第一步是聲明一個從 WebTestCase 擴展而來的類
如清單
所示
清單
聲明測試用例類
public class GoogleTest extends WebTestCase {
static String searchLink =
;
}
正如我在前面提到過的
jWebUnit 要求每個測試用例都是從 WebTestCase 中擴展而來的
searchLink 保存傳入的搜索參數
這個值以命令行參數的形式傳遞給測試用例
下一步是聲明入口點 —— main() 方法
如清單
所示
清單
main() 方法
public static void main(String[] args) {
searchLink = args[
];
junit
textui
TestRunner
run(new
TestSuite(GoogleTest
class));
}
main() 方法調用 junit
textui
TestRunner
run() 執行 JTest 測試用例
因為需要運行 GoogleTest 測試用例
所以
作為參數傳遞給 run() 方法的測試套件采用 GoogleTest
class 作為參數
接下來
JTest 調用 setUp() 方法來設置基本 URL 和代理
如清單
所示
清單
設置
public void setUp() {
getTestContext()
setBaseUrl(
);
getTestContext()
setProxyName(
);
getTestContext()
setProxyPort(
);
}
清單
把基本 URL 設置為
這意味著測試用例的啟動是相對於這個 URL 的
下面兩個語句設置連接到 Internet 的代理主機和代理端口
如果是直接連接到 Internet
那麼可以忽略代理設置語句
現在開始浏覽站點並輸入搜索參數
清單
顯示了訪問 Web 頁面
然後測試所有場景的代碼
清單
測試所有場景
public void testSearch() {
beginAt(
/
);
assertFormElementPresent(
q
);
setFormElement(
q
HttpUnit
);
submit(
btnG
);
assertLinkPresentWithText(searchLink);
clickLinkWithText(searchLink);
}
清單
的代碼連接到基本 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
zip 文件
那麼將 JAR_BASE 設置為 C:\temp\jwebunit
\lib
打開命令行提示符
切換到 C:\temp 目錄
執行 setclasspath
bat
這會設置執行測試用例所需的 CLASSPATH
用命令 java com
jweb
test
GoogleTest
HttpUnit Home
運行應用程序
示例輸出 在執行了測試用例之後
會在命令行輸出一個測試用例報告
如果測試失敗
報告看起來如清單
中所示
清單
帶有斷言失敗的輸出
C:\temp>java com
jweb
test
GoogleTest
HttpUnit Hwee
F
Time:
There was
failure:
) 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:
)
at net
sourceforge
jwebunit
WebTestCase
assertLinkPresentWithText(WebTestCase
java:
)
at com
jweb
test
GoogleTest
testSearch(GoogleTest
java:
)
at sun
reflect
NativeMethodAccessorImpl
invoke
(Native Method)
at sun
reflect
NativeMethodAccessorImpl
invoke(Unknown Source)
at sun
reflect
DelegatingMethodAccessorImpl
invoke(Unknown Source)
at com
jweb
test
GoogleTest
main(GoogleTest
java:
)
FAILURES!!!
Tests run:
Failures:
Errors:
正如在清單
中可以看到的
可以用 HttpUnit Hwee 作為參數來執行測試用例
這個測試用例遇到斷言的地方會失敗
因為結果頁面中不包含帶有這個文本的鏈接
由此也就產生了junit
framework
AssertionFailedError
清單
執行時用 HttpUnit Home 作為參數
測試用例找到一個帶有這個文本的鏈接
所以測試通過了
清單
成功測試的輸出
C:\temp>java com
jweb
test
GoogleTest
HttpUnit Home
Time:
OK (
test)
結束語 本文通過討論 jWebUnit 框架的一些突出特性和最重要的類
介紹如何用它創建簡潔的測試用例
讓您對 jWebUnit 框架有一個認識
jWebUnit 還有更多特性可以用在測試用例中
它支持測試 Web 頁面中的鏈接行數
可以對字符串
表或者帶有指定標簽的表單輸入元素是否存在於頁面上進行斷言
此外
jWebUnit 還可以處理 cookie (例如斷言存在某個 cookie
刪除 cookie 等
)測試可以對某個文本之後出現的特定文本的鏈接進行單擊
如果想為 Web 應用程序構建快而有效的測試用例
jWebUnit 可能是您最好的朋友
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19121.html