有时,在进行接口测试时,很多时候需要依赖外部的接口环境,但在实际开发中,尤其是敏捷开发模式中,很多时候依赖的外部接口环境可能不通或者未开发完毕,这时候无法及时进行端到端的测试,测试桩的必要性就非常重要了。
我在上一篇文章中已介绍使用第三方工具SoapUI做为模拟服务端作为测试桩进行接口测试,详见http://blog.csdn.net/russ44/article/details/52230355
但由于SoapUI通常部署在本地的Windows环境上(linux环境本人未使用过,不建议),而测试环境通常部署在linux服务器上,可能存在测试环境无法调通本地环境的情况,这时就需要另一种方式部署到linux服务器进行接口测试,详细如下:
一、测试桩项目介
绍
1. jetty介绍:
Jetty 是一个开源的servlet容器,它为基于Java的web容器,易用性是 Jetty 设计的基本原则,详情可百度之
所需jar包(本人):
2. 测试桩目的:
测试人员在测试中,尤其是进行接口测试时,经常需要使用到测试桩来进行测试,通常情况下,相应的开发人员会写好相应的测试桩,以jar包的形式作为一个服务端给客户端进行调用(当接口联调未能按计划进行或延迟时,测试人员应主导向开发人员要求提供测试桩进行测试,具体视实际情况而定)
3. 测试桩原理
相当于启动一个jetty容器,拦截对应的请求,返回相应的报文。
4. 测试桩使用过程
1.在server包下写一个带main函数(这个main函数会启动一个jetty容器)的java类,配置端口号,想要拦截的请求,和对应的处理请求的servlet
<span style="font-size:18px;">package cn.migu.server;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import cn.migu.servlet.JsonResponseDemo;
import cn.migu.servlet.XmlResponseDemo;
import cn.migu.util.Log4jUtil;
/**
* <Description> 服务入口配置
* @author YanLu
*
*/
public class HttpServerDemo {
//private static Log4jUtil log = new Log4jUtil(HttpServerDemo.class.getName());
/**
* main方法入口
*
* @param args
*/
public static void main(String[] args) {
try {
Server server = new Server(19993);
// 指定服务的端口号
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
// 一个context就是一个WEB-Application
context.setContextPath("/test");
// 访问项目名(路径)
server.setHandler(context);
// servlet映射的路径,类似于web.xml的servlet url-pattern定义
context.addServlet(new ServletHolder(new XmlResponseDemo()), "/ChannelFaqSearch");
// 两个参数分别为拦截请求的servlet和想要拦截的路径
context.addServlet(new ServletHolder(new JsonResponseDemo()), "/ExecuteCampaign");
//log.info("server start.");
System.out.println("server start.");
// 启动服务
server.start();
server.join();
} catch (Exception e) {
e.printStackTrace();
}
}
}
</span>
2.在servlet