jWebUnit简介
jWebUnit是以HttpUnitJUnit 单元测试框架为基础,用于为Web应用程序开发测试用例,对 Web应用程序自动进行测试意味着跳过Web浏览器,通过程序来处理Web站点。jWebUnit提供了导航Web应用程序的高级API,并组合了一组断言,用它们来验证url、页面文本、按钮、表单项、cookie等页面元素。可以简单快捷的实现页面级自动化测试用例。
与automan框架比较的优缺点
优点1. 编码简单,API直观。在eclipse里编写简单的语句调用API,可以实现基本的页面操作。
优点2. 运行速度快。由于是程序模拟浏览器进行运行,相比automan框架真实进行浏览器操作来说,用例执行的速度相当快。可快速进行回归测试。
优点3. 基于java,易于扩展兼容。
缺点1. 对部分页面js无法支持
缺点2. 浏览器无法支持支付宝控件,在需要控件的页面无法进行用例编写
下载 jWebUnit,在Eclipse中配置jWebUnit
1. 把下载的文件jwebunit-2.5-release.zip释放到任意目录中(假设是d:\temp)直接下载或访问jwebunit网站
2. 在 Eclipse 中创建新 Java 项目,将其命名为TaobaoJWebUnit。
3. 右击 Package Explorer 视图中的TaobaoJWebUnit项目,然后选Properties。
4. 单击Java Build Path。单击Libraries 标签中的 Add External JARs。
5. 浏览到 d:\temp\jwebunit-2.5\lib 目录,选择这个目录中的所有 JAR 文件。
6. 单击 OK。
现在可以编写测试用例。以下举例说明验证登录功能的一个简单用例
1. 新建LoginTest.class
2. 编码如下
public class LoginTest extends WebTestCase{
public void testlogin(){
this.beginAt(“此处应该为测试环境的登录url,以防泄密,所以不写在这里”);
this.setTextField(“TPL_username”, “wtx0000″);
this.setTextField(“TPL_password”,”testpw”);
this.clickButtonWithText(“登录”);
this.assertLinkPresentWithText(“退出”);
3. 右键——run as ——Junit Test
4. 查看运行结果
代码解析:
1.从代码我们可以看出,jwebunit提供的API非常直观。通常情况下,我们可以通过html控件的name或者id来定位。除此之外,还可以通过xpath语法对控件进行定位,xpath语法是一种非常简单的语法。
2.不支持https
以下是jwebunit核心类的几个重要方法
每个 jWebUnit 测试的核心都是 net.sourceforge.jwebunit.WebTestCase 类,它代表测试用例。每个测试用例都必须是从这个类扩展而来。(net.sourceforge.jwebunit.WebTestCase 类本身则是从 junit.framework.TestCase 类扩展而来的,它在 JUnit 中代表测试用例。)
net.sourceforge.jwebunit.WebTestCase 类的重要方法
public TestContext getTestContext() 得到测试用例的上下文。可以用它访问像地区、基本 URL 和 cookie 之类的项目
public void beginAt(String relativeURL) 在相对于基本 URL 的 URL 处开始对话
public void setWorkingForm(String nameOrId) 与指定的表单开始交互。如果当前页面只有一个表单,就不需要调用这个方法
protected void submit() 提交表单 —— 等同于单击表单的 提交 按钮
public void gotoFrame(String frameName) 激活命名帧
另一个重要的类是 net.sourceforge.jwebunit.TestContext。它为测试创建上下文。可以用这个类来处理像 cookie、会话和授权之类的信息。
net.sourceforge.jwebunit.TestContext 类的重要方法
public void addCookie(String name, String value) 向测试上下文中添加 cookie。在 HttpUnitDialog 开始时,添加的 cookie 被设置到 WebConversation 上
public void setResourceBundleName(String name) 为测试上下文设置一个使用的资源绑定。用于按照 WebTester 中的键查找期望的值
public void setProxyName(String proxyName) 为测试上下文设置代理服务器名称
public void setBaseUrl(String url) 为测试上下文设置基本 URL