restful接口模拟并发请求测试 支持导出测试结果到excel http请求 和导出excel用了hutool工具类 5.*版本
效果:
1.顶层的接口
public interface RequestService { /** * 返回测试结果 * @param requestVo * @return */ List<ResponseVo> doRequest(RequestVo requestVo); /** * 导出测试结果 * @param requestVo */ void doExportRequest(RequestVo requestVo); }
--------------------------------------------------------------------------------------------------------------------------------------------------------
2.抽象类
public abstract class AbstactRequestServiceImpl implements RequestService { @Override public abstract List<ResponseVo> doRequest(RequestVo requestVo); @Override public abstract void doExportRequest(RequestVo requestVo); void downLoadExcel(List<ResponseVo> list){ HttpServletResponse resp = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); try { FileUtil.downloadExcel(BuildUtil.buildListMap(list), resp, "测试结果"); } catch (IOException e) { e.printStackTrace(); } } List<ResponseVo> buildResponseList(List<Future<ResponseVo>> resultList){ List<ResponseVo> list=new ArrayList<>(); for(Future<ResponseVo> future:resultList){ try { list.add(future.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } return list; } }
--------------------------------------------------------------------------------------------------------------------------------------------------------
实现类
/** * @author dhc */ public class GetRequestServiceImpl extends AbstactRequestServiceImpl { private ThreadPoolTaskExecutor threadPoolTaskExecutor; public GetRequestServiceImpl(ThreadPoolTaskExecutor threadPoolTaskExecutor) { this.threadPoolTaskExecutor = threadPoolTaskExecutor; } /** * 请求次数要大于并发次数才会执行 * @param requestVo * @return */ @Override public List<ResponseVo> doRequest(RequestVo requestVo) { int count =requestVo.getRequestCount(); int threadCount = requestVo.getThreadCount(); CyclicBarrier cyclicBarrier = new CyclicBarrier(threadCount); List<Future<ResponseVo>> resultList = new ArrayLis