国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

為Web應(yīng)用程序創(chuàng)建測試用例的辦法二

2019-11-18 13:08:47
字體:
供稿:網(wǎng)友

  另一個(gè)重要的類是 net.sourceforge.jwebunit.TestContext。它為測試創(chuàng)建上下文。可以用這個(gè)類來處理像 cookie、會話和授權(quán)之類的信息。表 2 顯示了這個(gè)類的一些重要方法:
  
為Web應(yīng)用程序創(chuàng)建測試用例的辦法二


  表 2. net.sourceforge.jwebunit.TestContext 類的重要方法
  
  下載 jWebUnit,在 Eclipse 中配置 jWebUnit
  
  JWebUnit 是用純 java 代碼實(shí)現(xiàn)的,所以可以以 JAR 文件的形式獲得它 (請參閱 參考資料,從中獲得下載鏈接)。在完成下載之后,請按以下步驟在 Eclipse 平臺上配置 JWebUnit 庫:
  
  把下載的文件 jwebunit-1.2.zip 釋放到臨時(shí)目錄中(假設(shè)是 C:/temp)。
  
  在 Eclipse 中創(chuàng)建新 Java 項(xiàng)目,將其命名為 jWebUnit。
  
  右擊 Package EXPlorer 視圖中的 jWebUnit 項(xiàng)目,然后選擇 PRoperties。
  
  單擊 Java Build Path。單擊 Libraries 標(biāo)簽中的 Add External JARs。
  
  瀏覽到 C:/temp/jwebunit-1.2/lib 目錄,選擇這個(gè)目錄中的所有 JAR 文件。
  
  單擊 OK。
  
  現(xiàn)在可以在 Eclipse 中的 jWebUnit 項(xiàng)目下開發(fā) jWebUnit 測試用例了。
  
  構(gòu)建示例應(yīng)用程序
  
  現(xiàn)在就可以查看 jWebUnit API 的實(shí)際應(yīng)用了。我將帶您研究一個(gè)示例應(yīng)用程序,幫助您更好地理解 jWebUnit 的真正威力。這個(gè)應(yīng)用程序是一個(gè)測試用例,用于打開一個(gè) Google 搜索頁面并搜索文本 HttpUnit。應(yīng)用程序需要測試以下場景:
  
  打開 Google 主頁 http://www.google.com。
  
  確定該頁包含一個(gè)名為 q 的表單元素。(在 Google 的主頁上,名為 q 的文本框是接受用戶查詢輸入的文本框。)應(yīng)用程序用這個(gè)元素輸入搜索參數(shù)。
  
  在搜索文本框中輸入字符串 HttpUnit Home,并提交表單。
  
  獲得結(jié)果頁,并確定該頁面包含的鏈接中包含文本 HttpUnit Home。
  
  單擊包含文本 HttpUnit Home 的鏈接。
  
  現(xiàn)在測試場景已經(jīng)就緒,可以編寫 Java 應(yīng)用程序,用 jWebUnit 實(shí)現(xiàn)這些需求了。
  
  第一步是聲明一個(gè)從 WeBTestCase 擴(kuò)展而來的類,如清單 3 所示:
  
  清單 3. 聲明測試用例類
  
  public class GoogleTest extends WebTestCase {
  static String searchLink = "";
  }
  
  正如我在前面提到過的,jWebUnit 要求每個(gè)測試用例都是從 WebTestCase 中擴(kuò)展而來的。searchLink 保存?zhèn)魅氲乃阉鲄?shù)。這個(gè)值以命令行參數(shù)的形式傳遞給測試用例。
  
  下一步是聲明入口點(diǎn) —— main() 方法,如清單 4 所示:
  
  清單 4. main() 方法
  
  public static void main(String[] args) {
  searchLink = args[0];
  junit.textui.TestRunner.run(new
  TestSuite(GoogleTest.class));
  }
  
  main() 方法調(diào)用 junit.textui.TestRunner.run() 執(zhí)行 JTest 測試用例。因?yàn)樾枰\(yùn)行 GoogleTest 測試用例,所以,作為參數(shù)傳遞給 run() 方法的測試套件采用 GoogleTest.class 作為參數(shù)。
  
  接下來,JTest 調(diào)用 setUp() 方法來設(shè)置基本 URL 和代理,如清單 5 所示:
  
  清單 5. 設(shè)置
  
  public void setUp() {
  getTestContext().setBaseUrl("http://www.google.com");
  getTestContext().setProxyName("proxy.host.com");
  getTestContext().setProxyPort(80);
  }
  
  清單 5 把基本 URL 設(shè)置為 http://www.google.com。這意味著測試用例的啟動(dòng)是相對于這個(gè) URL 的。下面兩個(gè)語句設(shè)置連接到 Internet 的代理主機(jī)和代理端口。假如是直接連接到 Internet,那么可以忽略代理設(shè)置語句。
  
  現(xiàn)在開始瀏覽站點(diǎn)并輸入搜索參數(shù)。清單 6 顯示了訪問 Web 頁面,然后測試所有場景的代碼:
  
  清單 6. 測試所有場景
  
  public void testSearch() {
  beginAt("/");
  assertFormElementPresent("q");
  setFormElement("q", "HttpUnit");
  submit("btnG");
  assertLinkPresentWithText(searchLink);
  clickLinkWithText(searchLink);
  }
  
  清單 6 的代碼連接到基本 URL,并相對于 / 開始瀏覽。然后它斷定頁面中包含一個(gè)名為 q 的表單元素 —— q 是 Google 主頁上查詢輸入文本框的名稱。下一條語句用值 HttpUnit 設(shè)置名為 q 的文本框。
  
  再下一條語言提交表單上名為 btnG 的提交按鈕。(在 Google 的主頁上,名為 btnG 的按鈕是標(biāo)簽為 Google Search 的按鈕。)表單是在這個(gè)對話中提交的,下一頁列出搜索結(jié)果。在結(jié)果頁面上,代碼首先檢查是否有一個(gè)鏈接的文本是 HttpUnit Home。假如該鏈接不存在,那么測試就以 AssertionFailedError 失敗。假如該鏈接存在,則測試執(zhí)行的下一個(gè)操作是單擊鏈接。
  
  運(yùn)行示例應(yīng)用程序
  
  現(xiàn)在把示例應(yīng)用程序投入使用當(dāng)中:
  
  下載示例應(yīng)用程序 j-webunitsample.jar 。
  
  在一個(gè)目錄中解壓縮 j-webunitsample.jar。例如,假如把它釋放到 C:/temp 中,那么就要把源文件和類文件放在 C:/temp/com/jweb/test 中,而 setclasspth.bat 則放在 C:/temp 中。
  
  編輯 setclasspath.bat:設(shè)置 JAR_BASE 指向包含所有必需 JAR 文件的目錄。例如,假如在 C:/temp 中釋放 jwebunit-1.2.zip 文件,那么將 JAR_BASE 設(shè)置為 C:/temp/jwebunit-1.2/lib。
  
  打開命令行提示符,切換到 C:/temp 目錄。
  
  執(zhí)行 setclasspath.bat。這會設(shè)置執(zhí)行測試用例所需的 CLASSPATH。
  
  用命令 java com.jweb.test.GoogleTest "HttpUnit Home" 運(yùn)行應(yīng)用程序。
  
  示例輸出
  
  在執(zhí)行了測試用例之后,會在命令行輸出一個(gè)測試用例報(bào)告。假如測試失敗,報(bào)告看起來如清單 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 作為參數(shù)來執(zhí)行測試用例。這個(gè)測試用例碰到斷言的地方會失敗,因?yàn)榻Y(jié)果頁面中不包含帶有這個(gè)文本的鏈接。由此也就產(chǎn)生了junit.framework.AssertionFailedError。
  
  清單 8 執(zhí)行時(shí)用 HttpUnit Home 作為參數(shù)。測試用例找到一個(gè)帶有這個(gè)文本的鏈接,所以測試通過了:
  
  清單 8. 成功測試的輸出
  
  C:/temp>java com.jweb.test.GoogleTest "HttpUnit Home"
  .
  Time: 6.991
  
  OK (1 test)
  
  結(jié)束語
  
  本文通過討論 jWebUnit 框架的一些突出特性和最重要的類,介紹如何用它創(chuàng)建簡潔的測試用例,讓您對 jWebUnit 框架有一個(gè)熟悉。jWebUnit 還有更多特性可以用在測試用例中。它支持測試 Web 頁面中的鏈接行數(shù)。可以對字符串、表或者帶有指定標(biāo)簽的表單輸入元素是否存在于頁面上進(jìn)行斷言。此外,jWebUnit 還可以處理 cookie (例如斷言存在某個(gè) cookie、刪除 cookie 等。)測試可以對某個(gè)文本之后出現(xiàn)的特定文本的鏈接進(jìn)行單擊。 假如想為 Web 應(yīng)用程序構(gòu)建快而有效的測試用例,jWebUnit 可能是您最好的朋友。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 菏泽市| 余姚市| 新乐市| 北川| 澳门| 婺源县| 昭觉县| 师宗县| 天台县| 富民县| 孙吴县| 察雅县| 临夏县| 育儿| 儋州市| 阳春市| 马尔康县| 涟源市| 宁安市| 晋中市| 陇西县| 广德县| 延长县| 普兰店市| 阿拉善盟| 潞西市| 和田县| 建湖县| 临沭县| 竹山县| 南昌县| 英山县| 和平县| 法库县| 富蕴县| 文登市| 铜梁县| 嘉善县| 永川市| 临漳县| 宁河县|