1.背景
實際生產中,我們開發好接口后可能會簡單的壓力測試一下,也就是說模擬並發測試,測試工具類如下:
2.工具類
package tentative.normal.other; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; import cn.hutool.http.Method; import com.alibaba.fastjson.JSON; import java.util.Map; import java.util.concurrent.CountDownLatch; /** * @Copyright (C) 四川XXXXXX有限公司 * @Author: LI DONG PING * @Date: 2020-09-24 10:21 * @Description: <p> * 並發請求工具類 * </p> */ public class HttpConcurrentUtil { //默認並發數 private static int num = 10; private static CountDownLatch cdl = new CountDownLatch(num); /** * 執行並發請求 * * @param url 請求url * @param paramMap 請求參數 * @param n 並發數 */ public static void doPost(String url, Map<String, Object> paramMap, Integer n) { if (n != null) { num = n; } for (int i = 0; i < num; i++) { new Thread(new HttpConcurrentUtil.UserRequest(url, paramMap)).start(); cdl.countDown(); } } public static class UserRequest implements Runnable { private String url; private Map<String, Object> paramMap; public UserRequest(String url, Map<String, Object> paramMap) { this.url = url; this.paramMap = paramMap; } @Override public void run() { try { cdl.await(); } catch (Exception e) { e.printStackTrace(); } //使用工具類發送http請求 doPost(url, paramMap); } /** * 這里可以根據自己的實際情況修改具體請求方式 * * @param url * @param paramMap */ public void doPost(String url, Map<String, Object> paramMap) { System.out.println("當前線程名稱:" + Thread.currentThread().getName()); System.out.println("請求地址:" + url); HttpRequest request = HttpUtil.createRequest(Method.POST, url); String jsonString = JSON.toJSONString(paramMap); //json參數格式 request.body(jsonString); //表單請求 //request.form(paramMap); System.out.println("請求參數:" + jsonString); request.setConnectionTimeout(60 * 1000); String response = request.execute().body(); System.out.println("響應結果:" + response); } } }
完美!