Jmeter-Java 工程测试(4)

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;

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.log.Logger;

//自定义类,写内容到文件方法类
class Output{
    public static void out(String filename,int a,int b) {
        try {
            PrintWriter pw = new PrintWriter(new File(filename));
            pw.write(a+":"+b);
            pw.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        
    }
}

//测试这个"写内容到文件方法类"
public class TestWrite extends AbstractJavaSamplerClient {
    private String a;
    private String b;
    private String filename;
    private SampleResult result;
    private Logger log = getLogger();
    
    //Jmeter调用此jar包时,设置的的默认的参数名称以及该参数的默认值。注意:方法名一定得是getDefaultParameters
    //设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中
    public Arguments getDefaultParameters() {
        log.info("start set default params");
        Arguments param = new Arguments();
        param.addArgument("a", "");
        param.addArgument("b", "");
        param.addArgument("filename", "");
        return param;
    }
    
    //初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行
    public void setupTest(JavaSamplerContext arg0) {
        result = new SampleResult();
    }

    //测试执行的循环体,根据线程数和循环次数的不同可执行多次
    @Override
    public SampleResult runTest(JavaSamplerContext arg0) {
        log.info("start run");
        result.sampleStart();       //jmeter开始统计响应时间标记
        a = arg0.getParameter("a"); //获取在Jmeter中设置的参数a的值
        b = arg0.getParameter("b"); //获取在Jmeter中设置的参数b的值
        filename = arg0.getParameter("filename"); //获取在Jmeter中设置的参数filename的值
        if(a !=null && b !=null) {
            //Integer.parseInt(a)是将数值字符串a转换成整型int
            //out是类Output的静态方法,所以可以使用 : 类名.方法名()  格式调用
            Output.out(filename, Integer.parseInt(a), Integer.parseInt(b));
            result.setResponseData("写入文件成功",null);
            result.setSuccessful(true);
            log.info("write file successful");
        }else {
            result.setSuccessful(false);
        }
        
        result.sampleEnd();       //jmeter结束统计响应时间标记
        return result;
    }
    
    //结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行
    public void teardownTest(JavaSamplerContext arg0) {
        
    }
    
    
    //本地调试方法,打包时得注释掉
    public static void main(String[] args) {
        Arguments param = new Arguments();
        param.addArgument("a", "15");
        param.addArgument("b", "25");
        param.addArgument("filename", "E:\\Jmeter\\JmeterWrite.txt");
        JavaSamplerContext arg0 = new JavaSamplerContext(param);
        
        TestWrite test = new TestWrite();
        test.setupTest(arg0);
        test.runTest(arg0);
        test.teardownTest(arg0);
        
    }
    

}
Jmeter-Java 工程测试(4)_第1张图片
JmeterJava.png

你可能感兴趣的:(Jmeter-Java 工程测试(4))