Jmeter AbstractJavaSamplerClient 案例
1:首先到apache-jmeter-3.0\lib\ext目录下引用以下两个jar包到Java工程里面
ApacheJMeter_core.jar
ApacheJMeter_java.jar
2:新建一个测试类继承AbstractJavaSamplerClient 并实现Serializable 接口,例如:
public class Ssfwpttest extends AbstractJavaSamplerClient implements Serializable { private static final long serialVersionUID = 1L; //设置GUI页面显示的变量名称 private static final String URL_NAME = "URL"; private static final String URLVALUE_DEFAULT = "https://xx"; //resultData变量用来存储响应的数据,目的是显示到查看结果树中。 private String resultData; private List<String> nsrsbhList = new ArrayList<String>(); @Override public Arguments getDefaultParameters() { Arguments arguments = new Arguments(); arguments.addArgument(URL_NAME, String.valueOf(URLVALUE_DEFAULT)); return arguments; } @Override public void setupTest(JavaSamplerContext context) { nsrsbhList.clear(); try { File file = new File("D:\\dj_nsrxx.xml"); SAXReader reader = new SAXReader(); Document doc = reader.read(file); Element rootElement = doc.getRootElement(); List<Element> nsrs = rootElement.elements(); Iterator<Element> iter = nsrs.iterator(); while (iter.hasNext()) { Element row = iter.next(); Element nsrsbh = row.element("NSRSBH"); nsrsbhList.add(nsrsbh.getTextTrim()); } } catch (DocumentException ex) { Logger.getLogger(Ssfwpttest.class.getName()).log(Level.SEVERE, null, ex); } } @Override public SampleResult runTest(JavaSamplerContext jsc) { int begin = 0; int end = nsrsbhList.size()-1; Random random = new Random(); int index = random.nextInt(end)%(end-begin+1) + begin; String nsrsbh = nsrsbhList.get(index); nsrsbhList.remove(nsrsbh);//使用过了就移除,避免出现重复 /* * SampleResult这个类是用来将测试结果输出到查看结果树中的。 * 并且也是用来控制事务的开始和结束的。 */ SampleResult results = new SampleResult(); results.setSampleLabel(nsrsbh+"=>"+URLVALUE_DEFAULT); results.sampleStart(); //请求参数需要动态设置 try { resultData = HttpsUtils.post(URLVALUE_DEFAULT, header, param, null); if (null != resultData) { JsonObject obj = new JsonParser().parse(resultData).getAsJsonObject(); if (null != obj) { String code = obj.get("code").getAsString(); if (code.equals("0")) { results.setSuccessful(true); } } } } catch (Exception e) { //如果发生异常,则捕捉,并且发送事务失败的消息。 results.setSuccessful(false); //e.printStackTrace(); } finally { //标记事务结束 results.sampleEnd(); } //将数据打印到查看结果树当中 results.setResponseData(resultData, null); results.setDataType(SampleResult.TEXT); return results; } }
3:将项目打包复制到apache-jmeter-3.0\lib\ext目录