当前位置: 首页 > news >正文

建网站软件工具达州市住房与城乡建设厅网站

建网站软件工具,达州市住房与城乡建设厅网站,有网站模板怎么建站,招聘平台本文通过实例来讲解如何通过HttpUnit来对web应用进行测试,尤其是当下Ajax越来越流行的情况下,http request和response交互频繁,里面传输的内容也以Json或者XML为主,用HttpUnit结合JUnit来做测试可以带来很多好处,甚至是在web页面还不存在的情况下,通过模拟http请求,包括模拟上传…

本文通过实例来讲解如何通过HttpUnit来对web应用进行测试,尤其是当下Ajax越来越流行的情况下,http request和response交互频繁,里面传输的内容也以Json或者XML为主,用HttpUnit结合JUnit来做测试可以带来很多好处,甚至是在web页面还不存在的情况下,通过模拟http请求,包括模拟上传文件,就可以用来测试服务端的servlet,action(有httprequest参数)等代码.

JAVA实例代码

HTTPStub :包装了HttpUnit提供的一些类,同时在初始化的时候做login验证,WebConversation会维护session的信息.

public class HTTPStub {

private WebConversation httpConversation;

private PostMethodWebRequest httpRequest;

public HTTPStub() {

httpConversation = new WebConversation();

String urlLogin = EnvConstant.SERVER_CTXT + EnvConstant.SERVER_LOGINURL;

GetMethodWebRequest getReq = new GetMethodWebRequest(urlLogin);

try {

httpConversation.getResponse(getReq);

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

} catch (SAXException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

public void initHttpRequest(String url) {

httpRequest = new PostMethodWebRequest(EnvConstant.SERVER_CTXT + url, true);

}

public void setParameter(String name, String value) {

httpRequest.setParameter(name, value);

}

public void setFile(String Filename) {

InputStream inputStream = FileUtil.readFromdefaultClspath(Filename);

httpRequest.selectFile("dumyfile", "dumyfile.csv", inputStream, "text/plain");

}

public WebResponse getHttpResponse() {

try {

return httpConversation.getResponse(httpRequest);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SAXException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

public String getHttpResponseContents() {

try {

WebResponse resp = httpConversation.getResponse(httpRequest);

StringBuffer strbf = new StringBuffer();

BufferedReader in = new BufferedReader(new InputStreamReader(resp.getInputStream()));

String str;

while ((str = in.readLine()) != null) {

strbf.append(str);

}

in.close();

return strbf.toString();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SAXException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

}

对inputstream处理的一个util类:

public class FileUtil {

public static InputStream readFromdefaultClspath(String fileName) {

InputStream stream = ClassLoader.getSystemResourceAsStream(fileName);

return stream;

}

public static String getContentsFromFile(String fileName) {

InputStream stream = readFromdefaultClspath(fileName);

StringBuffer strbf = new StringBuffer();

try {

BufferedReader in = new BufferedReader(new InputStreamReader(stream));

String str;

while ((str = in.readLine()) != null) {

strbf.append(str);

}

in.close();

} catch (IOException e) {

e.printStackTrace();

}

return strbf.toString();

}

}

Junit测试类:

public class ActionCopyBillTest {

private HTTPStub httpStub;

@Before

public void setUp() throws Exception {

httpStub = new HTTPStub();

}

@After

public void tearDown() throws Exception {

}

@Test

public void testPerform() {

httpStub.initHttpRequest("FrontController?command=CopyBill");

httpStub.setParameter("bm_cb_dtCategory", "Copy Bill Request");

httpStub.setParameter("bm_cb_SRID", "SR0001");

httpStub.setParameter("bm_cb_ItemOpt", "2- Custom Itemisation");

httpStub.setParameter("bm_cb_BillLanCode", "ENG");

httpStub.setParameter("bm_cb_LegendPrs", "Copy Legend");

httpStub.setParameter("bm_cb_BillStruct", "Front Page Only");

httpStub.setParameter("bm_cb_ItemThd", "1");

httpStub.setParameter("bm_cb_BillMedia", "Paper Bill");

httpStub.setParameter("bm_cb_BillFormat", "Blue Bill");

httpStub.setFile("testdata/req/CopyBill_1.csv");

String respContents = httpStub.getHttpResponseContents();

String ritContents = FileUtil.getContentsFromFile("testdata/rep/CopyBill_1.rsp");

Assert.assertEquals(respContents, ritContents);

}

}

如果想对response进行验证,可以通过手工从html页面输入数据,提交请求,用工具(如eclipse带有的插件tcp/ip monitor)将response截取下来保存为文件,然后和junit测试的时候的response对比.

另外,返回的response也提供了一系列方法来操作其包含的内容:

1,如返回的是文本,可以通过resp.getText()获取,如果文本是json格式,可以再进一步构造成jsonobject来操作.

String respContents = resp.getText();

JSONObject json = new JSONObject(respContents);

System.out.println(json.getInt("total"));

JSONArray arr = json.getJSONArray("userdata");

System.out.println(arr.get(0));

2,如果返回的是XML(标准结构的html也是合法的XML),可以得到w3c 的document对象,resp.getDOM();

3,如果返回的是html页面,WebResponse提供了一组类似于Javascript操作html dom的方法.

resp.getElementWithID(id)

resp.getTables();

...

http://www.15wanjia.com/news/186152.html

相关文章:

  • 教你做文案的网站推荐深圳住房建设局网站
  • 唐山网站专业制作免费访问国外网站的app
  • 重庆长寿网站设计公司推荐南通住房和城乡建设局网站
  • 网站开发是什么费用网站开发公司方案报价
  • 2017年内蒙古建设厅网站网站开发后台数据怎么来
  • 沧州网站艰涩很wordpress 灯箱
  • 做动画 的 网站网站建设公司领导致辞
  • 哪个网站公司做的好荣耀商城app
  • 杭州文化传媒类高端网站建设公司做网站有要求吗
  • 四川省的建设厅注册中心网站晓风彩票网站建设软件
  • 旅游网网站的设计网站架构计划书
  • 门户网站建设服务网站建设目标是什么
  • 自己建服务器做网站违法廊坊哪里做网站好
  • 国外的自建站平台是什么在线设计制作
  • 南京快速建站模板下载互助网站制作公司
  • 个人怎么做动漫短视频网站网站欢迎页面代码
  • php网站开发参考书籍微信商城在哪里点开
  • 茂名市建设银行网站项目从立项到施工的程序
  • 网站服务器不稳定怎么打开网页视觉设计网站有哪些
  • 电子商务网站登录简述网站建设的基本流程图
  • 网站建设中主页指的是电商培训班一般学多久
  • 网站建设财务分析新吴区网站建设
  • 网站都要icp备案吗漯河市源汇区网站建设
  • 国内新闻最新消息10条2021对新网站做seo大概需要多久
  • 天津市网站建设+网页制作wordpress软件网站模板下载
  • wordpress站点全屏中山网站建设制作 .超凡科技
  • 网站建设设计策划手机可以做网站吗
  • 做网站相册wordpress ispost
  • 小程序开发一个要多少钱福州短视频seo排行
  • 营销网站认识百度搜索结果优化