InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

JSF Testing Tools

作者 Srini Penchikala 译者 曹云飞 发布于 2008年1月3日

领域
架构 & 设计,
运维 & 基础架构,
语言 & 开发
主题
开放源代码 ,
Java ,
单元测试 ,
工件和工具
标签
框架 ,
测试
因为在容器以外测试JSF组件有所限制,所以大家一直认为对于JSF应用进行单元测试是困难的。多数web层的测试框架遵循黑盒测试方式,开发者用web组件编写测试类来验证渲染的HTML输出是否符合预期。HtmlUnitHttpUnit,Canoo WebTestSelenium等框架都属于这个类型。这些框架的局限在于它们仅仅只能测试web应用的客户端。

但是这种现象已经随着近来发布的JSFUnit和其它一些JSF测试框架,如Shale TestJSF Extensions而改变了。这些测试框架支持对web应用的客户端和服务器端组件的白盒测试。并且,一些项目,如Eclipse Web Tools Platform (WTP)和 JXInsight 已开始协助JSF应用的开发和测试了。

与其它的单元测试框架一样,一个典型的JSF测试框架需要具备以下特性:

  • 可在容器之外独立的运行一个测试用例,可从一个类似Eclipse NetBeans的IDE里面运行测试用例,以促进测试驱动开发(TDD)。 
  • 可测试完整的HTTP请求-响应生命周期。
  • 与构建工具如AntMaven集成 ,从而在一个自动构建和持续集成的环境下运行单元测试。

测试框架还需支持JSF的特定需求,如:

  • 在测试方法中调用JSF API,而不是检查HTML输出或客户端DOM对象。
  • 通过验证用户在表单上的输入和访问正确的页面视图来导航测试。
  • 验证action是否按预期执行,以及错误情况是否显示预期的错误消息。
  • 即使rendered属性被设置为假(组件不在web浏览器上渲染但仍在服务器端保存状态)时依然可以验证JSF组件。
  • 验证XML配置文件(faces-config.xml 等)是否被正确加载。

 测试框架

JSFUnit构建在HttpUnit和Apache Cactus之上,允许JSF应用和JSF AJAX组件的综合测试和调试。它可以在同一个测试类里测试JSF产品的客户端和服务器端。有了JSFUnit API,测试类方法可以提交表单数据,并且验证管理的bean是否被正确更新。

JSFUnit包括一个JSF静态分析测试套件用来验证JSF配置文件,以确保在运行时产生问题之前就能识别出任何与配置相关的问题。它还提供了JSFTimer组件来执行JSF生命周期的性能分析。它可被应用于跟踪JSF生命周期的每个阶段对于一个指定的web请求的响应时间,并断言该响应时间在SLA限定之内。

JSFUnit支持RichFacesAjax4jsf 组件。此框架的Beta 1版本在上月发布,第二Beta版本计划在下个月末发布。

Shale 测试框架作为一个Apache项目,提供了对Servlet和JSF组件的mock对象实现。这些基础的测试类可应用于测试Shale框架类以及构建于该框架之上的JSF应用组件。Shale测试可用于编写独立的单元测试来运行ViewController 接口暴露的方法。因为为一个ViewController 组件搭建运行环境很复杂,所以Shale测试是很有用的。以下是Shale测试框架的主要类:

Shale测试还与Spring框架进行了集成,允许JSF组件被绑定为管理bean或Spring bean。

JSF Extensions项目是一个无UI组件的集合,它扩展了基于JSF 1.2的web应用的功能。它使用JUnit,HTMLUnit和Cactus进行自动测试。框架的Test-Time模块为JSF 1.2提供mock对象。Design-Time模块具有JSF热部署功能,能停止和重启应用而无需经历构建和重部署周期。这个基于JSF PhaseListener接口的特性会使得所有的配置文件和类被重载。这些使得开发者能在编写JSF应用时遵循一种测试驱动迭代JSF开发方式。

工具

还有一些开发工具也辅助JSF应用的开发和性能检测。JInspired 组的JXInsight提供了JSF跟踪和性能检测特性,该特性基于PhaseListener接口。在JSF应用中使用这个跟踪监听器,开发者和web管理员可以对于一个JSF请求收集到例如跟踪栈、java调用栈和运行时UIComponent的层次关系等信息。

Eclipse WTP 项目里的JSF工具的子项目还提供了支持开发和部署基于JSF的web应用的工具,如Visual JSF Page Editor和Faces Config Editor。

查看英文原文JSF Testing Tools

译者 曹云飞 从事软件开发多年,包括Web应用、桌面应用、前后端开发,热衷于计算机理论与应用技术的钻研,软件架构与敏捷开发。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。