熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

為Web應用程序創建測試用例的辦法二

2013-11-15 09:47:33  來源: JSP教程 

  另一個重要的類是 netsourceforgejwebunitTestContext它為測試創建上下文可以用這個類來處理像 cookie會話和授權之類的信息 顯示了這個類的一些重要方法
  

  表 netsourceforgejwebunitTestContext 類的重要方法
  
  下載 jWebUnit在 Eclipse 中配置 jWebUnit
  
  JWebUnit 是用純 Java 代碼實現的所以可以以 JAR 文件的形式獲得它 (請參閱 參考資料從中獲得下載鏈接)在完成下載之後請按以下步驟在 Eclipse 平台上配置 JWebUnit 庫
  
  把下載的文件 jwebunitzip 釋放到臨時目錄中(假設是 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[];
  junittextuiTestRunnerrun(new
  TestSuite(GoogleTestclass));
  }
  
  main() 方法調用 junittextuiTestRunnerrun() 執行 JTest 測試用例因為需要運行 GoogleTest 測試用例所以作為參數傳遞給 run() 方法的測試套件采用 GoogleTestclass 作為參數
  
  接下來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 失敗如果該鏈接存在則測試執行的下一個操作是單擊鏈接
  
  運行示例應用程序
  
  現在把示例應用程序投入使用當中
  
  下載示例應用程序 jwebunitsamplejar
  
  在一個目錄中解壓縮 jwebunitsamplejar例如如果把它釋放到 C:\temp 中那麼就要把源文件和類文件放在 C:\temp\com\jweb\test 中而 setclasspthbat 則放在 C:\temp 中
  
  編輯 setclasspathbat設置 JAR_BASE 指向包含所有必需 JAR 文件的目錄例如如果在 C:\temp 中釋放 jwebunitzip 文件那麼將 JAR_BASE 設置為 C:\temp\jwebunit\lib
  
  打開命令行提示符切換到 C:\temp 目錄
  
  執行 setclasspathbat這會設置執行測試用例所需的 CLASSPATH
  
  用命令 java comjwebtestGoogleTest HttpUnit Home 運行應用程序
  
  示例輸出
  
  在執行了測試用例之後會在命令行輸出一個測試用例報告如果測試失敗報告看起來如清單 中所示
  
  清單 帶有斷言失敗的輸出
  
  C:\temp>java comjwebtestGoogleTest HttpUnit Hwee
  F
  Time:
  There was failure:
  ) testSearch(comjwebtestGoogleTest)junit
  frameworkAssertionFailedError: Link
   with text [HttpUnit Hwee] not found in response
  at netsourceforgejwebunitWebTester
  assertLinkPresentWithText(WebTesterjava:)
  at netsourceforgejwebunitWebTestCase
  assertLinkPresentWithText(WebTestCasejava:)
  at comjwebtestGoogleTesttestSearch(GoogleTestjava:)
  at sunreflectNativeMethodAccessorImplinvoke(Native Method)
  at sunreflectNativeMethodAccessorImplinvoke(Unknown Source)
  at sunreflectDelegatingMethodAccessorImplinvoke(Unknown Source)
  at comjwebtestGoogleTestmain(GoogleTestjava:)
  
  FAILURES!!!
  Tests run:  Failures:  Errors:
  
  正如在清單 中可以看到的可以用 HttpUnit Hwee 作為參數來執行測試用例這個測試用例遇到斷言的地方會失敗因為結果頁面中不包含帶有這個文本的鏈接由此也就產生了junitframeworkAssertionFailedError
  
  清單 執行時用 HttpUnit Home 作為參數測試用例找到一個帶有這個文本的鏈接所以測試通過了
  
  清單 成功測試的輸出
  
  C:\temp>java comjwebtestGoogleTest 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
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.