Jmeter-Java请求

步骤:

1. 创建Java 工程,打包成jar

测试类需要继承AbstractJavaSamplerClient类

2. 把打包好的jar文件放入JMETER_HOME\lib\ext目录

3.重启Jmeter>新建线程>添加sampler(java请求)>选择类名称“com.test.webservice.perftest”>添加“结果树”>进行测试


Hello.java:(服务)

package com.test.webservice;
public class Hello {
    public String sayHello()
    {
        return "Hello";
    }
    public String sayHelloToPerson(String s)
    {
        if(s == null || s.equals(""))
            s = "nobody";
        return (new StringBuilder()).append("Hello ").append(s).toString();
    }
    public int sum(int a,int b)
    {
        return a+b;
    }
//调试用,测试时可以删掉
    public static void main(String[] args){
    	Hello person1=new Hello();
    	person1.sayHelloToPerson("Lily");
    	System.out.println("测试成功!"); 
    }
}


perftest.java:(测试类)

package com.test.webservice;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;
import com.test.webservice.Hello;

public class perftest extends AbstractJavaSamplerClient{
	private String a;
	private String b;
	private String resultData;
	
    // 这个方法是用来自定义java方法入参的。
    // params.addArgument("num1","");表示入参名字叫num1,默认值为空。
    //设置可用参数及的默认值;
	public Arguments getDefaultParameters(){
		Arguments param=new Arguments();
		param.addArgument("name1", "");
		param.addArgument("num2", "");
		return param;
	}
	public void setupTest(JavaSamplerContext arg0){
		
	}
	
	//开始测试,从arg0参数可以获得参数值;
	public SampleResult runTest(JavaSamplerContext arg0){
		a=arg0.getParameter("num1");
		b=arg0.getParameter("num2");
		SampleResult sr=new SampleResult();
		sr.setSampleLabel("java请求1");
		try {
			sr.sampleStart();
			Hello test=new Hello();
			// 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。
			resultData=String.valueOf(test.sum(Integer.parseInt(a),Integer.parseInt(b)));
			if(resultData!=null&&resultData.length()>0){
				sr.setResponseData("结果是:"+resultData, null);
				sr.setDataType(SampleResult.TEXT);
			}
			sr.setSuccessful(true);
					
		} catch (Throwable e) {
			sr.setSuccessful(false);
			e.printStackTrace();
			// TODO: handle exception
		}finally {
			sr.sampleEnd();// jmeter 结束统计响应时间标记
		}
		return sr;
	}
	public void teardownTest(JavaSamplerContext arg0){
		
	}
	public static void main(String[] args){
		Arguments params=new Arguments();
		params.addArgument("num1", "1");
		params.addArgument("num2", "2");
		JavaSamplerContext arg0=new JavaSamplerContext(params);
		perftest test1=new perftest();
		test1.setupTest(arg0);
		test1.runTest(arg0);
		test1.teardownTest(arg0);
	}

}


注:执行继承AbstractJavaSamplerClient类的java文件时提示“org.apache.logging.log4j.simplelog.StatusLogger.level 需要设置成trace”,新建xml文件设置属性:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
     <Logger name="org.apache.logging.log4j.simplelog.StatusLogger" level="trace">
       <AppenderRef ref="Console"/>
</Logger>
<Logger name="com.demo" level="debug">
       <AppenderRef ref="Console"/>
</Logger>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>    
  </Loggers>
</Configuration>




猜你喜欢

转载自blog.csdn.net/tx_programming/article/details/73872816
今日推荐