当前位置: 首页 > 工具软件 > HttpUnit > 使用案例 >

httpUnit介绍及使用示例

宋航
2023-12-01

内容摘要

HttpUnit是一个集成测试工具,主要关注Web应用的测试,提供的帮助类让测试者可以通过Java类和服务器进行交互,并且将服务器端的响应当作文本或者DOM对象进行处理。HttpUnit还提供了一个模拟Servlet容器,让你可以不需要发布Servlet,就可以对Servlet的内部代码进行测试。本文中作者将详细的介绍如何使用HttpUnit提供的类完成集成测试。

1  HttpUnit简介

HttpUnit是SourceForge下面的一个开源项目,它是基于JUnit的一个测试框架,主要关注于测试Web应用,解决使用JUnit框架无法对远程Web内容进行测试的弊端。当前的最新版本是1.5.4。为了让HtpUnit正常运行,你应该安装JDK1.3.1或者以上版本。

1.1  工作原理

HttpUnit通过模拟浏览器的行为,处理页面框架(frames),cookies,页面跳转(redirects)等。通过HttpUnit提供的功能,你可以和服务器端进行信息交互,将返回的网页内容作为普通文本、XML Dom对象或者是作为链接、页面框架、图像、表单、表格等的集合进行处理,然后使用JUnit框架进行测试,还可以导向一个新的页面,然后进行新页面的处理,这个功能使你可以处理一组在一个操作链中的页面。

1.2  和其他商业工具的对比

商业工具一般使用记录、回放的功能来实现测试,但是这里有个缺陷,就是当页面设计被修改以后,这些被记录的行为就不能重用了,需要重新录制才能继续测试。

举个例子:如果页面上有个元素最先的设计是采用单选框,这个时候你开始测试,那么这些工具记录的就是你的单项选择动作,但是如果你的设计发生了变化,比如说我改成了下拉选择,或者使用文本框接受用户输入,这时候,你以前录制的测试过程就无效了,必须要重新录制。

而HttpUnit因为关注点是这些控件的内容,所以不管你的外在表现形式如何变化,都不影响你已确定测试的可重用性。

更多的关于httpunit的信息请访问httpunit的主页http://httpunit.sourceforge.net

举例:

import org.junit.Assert;

import org.junit.Test;


import com.meterware.httpunit.GetMethodWebRequest;

import com.meterware.httpunit.WebRequest;

import com.meterware.httpunit.WebResponse;


public class DataSourceResourceTest extends ServletTest {


  private static final String REQUST_URL = "http://www.meterware.com/rest/xxx/admin/datasources";


  private static final String DATASOURCE = "TestConnection1";


  @Test

  public void testGetDataSources() {

    try {

      WebRequest wr = new GetMethodWebRequest(REQUST_URL);

      WebResponse response = runner.getResponse(wr);

      Assert.assertEquals(SUCCEED_200, response.getResponseCode());

      printResponseInfo(response);

    } catch (Exception e) {

      Assert.fail("Get datasource failed!");

    }

  }

  @Test

  public void testCreateEmptyQuery(){

    try {

      WebRequest wr = new PostMethodWebRequest(REQUST_URL+"/"+QUERY_NAME);

      wr.setParameter("connection", "TestConnection1");

      wr.setParameter("catalog", "FoodMart");

      wr.setParameter("schema", "FoodMart");

      wr.setParameter("cube", "Store");

      wr.setParameter("xml", "");

      WebResponse response = runner.getResponse(wr);

      Assert.assertEquals(SUCCEED_200, response.getResponseCode());

      printResponseInfo(response);

    } catch (Exception e) {

      Assert.fail("Create empty query failed!");

    }

  }

}

 类似资料: