论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
JWebUnit为Web应用程序创建测试用例的办法二
 作者:佚名     2007-3-14 16:33:06        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

另一个重要的类是 net.sourceforge.jwebunit.TestContext。它为测试创建上下文。可以用这个类来处理像 cookie、会话和授权之类的信息 

  下载 jWebUnit,在 Eclipse 中配置 jWebUnit  

  JWebUnit 是用纯 Java 代码实现的,所以可以以 JAR 文件的形式获得它 (请参阅 参考资料,从中获得下载链接)。在完成下载之后,请按以下步骤在 Eclipse 平台上配置 JWebUnit 库:  

  把下载的文件 jwebunit-1.2.zip 释放到临时目录中(假设是 C:\temp)。  

  在 Eclipse 中创建新 Java 项目,将其命名为 jWebUnit。  

  右击 Package Explorer 视图中的 jWebUnit 项目,然后选择 Properties。  

  单击 Java Build Path。单击 Libraries 标签中的 Add External JARs。  

  浏览到 C:\temp\jwebunit-1.2\lib 目录,选择这个目录中的所有 JAR 文件。  

  单击 OK。  

  现在可以在 Eclipse 中的 jWebUnit 项目下开发 jWebUnit 测试用例了。  

  构建示例应用程序  

  现在就可以查看 jWebUnit API 的实际应用了。我将带您研究一个示例应用程序,帮助您更好地理解 jWebUnit 的真正威力。这个应用程序是一个测试用例,用于打开一个 Google 搜索页面并搜索文本 HttpUnit。应用程序需要测试以下场景:  

  打开 Google 主页 http://www.google.com。  

  确定该页包含一个名为 q 的表单元素。(在 Google 的主页上,名为 q 的文本框是接受用户查询输入的文本框。)应用程序用这个元素输入搜索参数。  

  在搜索文本框中输入字符串 HttpUnit Home,并提交表单。  

  获得结果页,并确定该页面包含的链接中包含文本 HttpUnit Home。  

  单击包含文本 HttpUnit Home 的链接。  

  现在测试场景已经就绪,可以编写 Java 应用程序,用 jWebUnit 实现这些需求了。  

  第一步是声明一个从 WebTestCase 扩展而来的类,如清单 3 所示:  

  清单 3. 声明测试用例类

  public class GoogleTest extends WebTestCase {

  static String searchLink = "";

  }

  正如我在前面提到过的,jWebUnit 要求每个测试用例都是从 WebTestCase 中扩展而来的。searchLink 保存传入的搜索参数。这个值以命令行参数的形式传递给测试用例。  

  下一步是声明入口点 —— main() 方法,如清单 4 所示:  

  清单 4. main() 方法  

  public static void main(String[] args) {

  searchLink = args[0];

  junit.textui.TestRunner.run(new

  TestSuite(GoogleTest.class));

  }

  main() 方法调用 junit.textui.TestRunner.run() 执行 JTest 测试用例。因为需要运行 GoogleTest 测试用例,所以,作为参数传递给 run() 方法的测试套件采用 GoogleTest.class 作为参数。  

  接下来,JTest 调用 setUp() 方法来设置基本 URL 和代理,如清单 5 所示:  

  清单 5. 设置  

  public void setUp() {

  getTestContext().setBaseUrl("http://www.google.com");

  getTestContext().setProxyName("proxy.host.com");

  getTestContext().setProxyPort(80);

  }

    清单 5 把基本 URL 设置为 http://www.google.com。这意味着测试用例的启动是相对于这个 URL 的。下面两个语句设置连接到 Internet 的代理主机和代理端口。如果是直接连接到 Internet,那么可以忽略代理设置语句。  

  现在开始浏览站点并输入搜索参数。清单 6 显示了访问 Web 页面,然后测试所有场景的代码: 

  清单 6. 测试所有场景  

  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可能是您最好的朋友。

(T126)


责任编辑:lss
  相关新闻
JSFToolbox--用Dreamweaver开发JSF
WebWork拦截器(Interceptor)使用方法
获得CCIEBS认证,成为IEBS证书持有者有什么利益
允许内部用户使用Outlook Web Access
欧盟同意甲骨文58.5亿美元收购Siebel
Web2.0时代的核心应用:Ajax简介
反流氓软件走向web2.0 奇虎将判定权移交网民
EasyJWeb 关于中文件上传的处理实例
Thinking in AJAX(二) —— WEB设计
Web框架趣谈之Java Web 框架的甜点
欧盟同意甲骨文58.5亿美元收购Siebel
获得CCIEBS认证,成为IEBS证书持有者有什么利益
反流氓软件走向web2.0 奇虎将判定权移交网民
比较 RIFE 与其他 Web Frameworks
EasyJWeb 关于中文件上传的处理实例
Web框架趣谈之Java Web 框架的甜点
Web2.0时代的核心应用:Ajax简介
Thinking in AJAX(二) —— WEB设计
XMLHttpRequest在Web开发利弊
用WebWork,JSP,Velocity建立注册页面
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号