0

こんにちは。Jmeter

Java Sampler コードを 1 つ作成しました。それが正しいか間違っているかはわかりません。そのURLとパラメータを入れHttp Requestて適切な結果を得たとしても、javasamplerその結果が得られなかったとして記述した場合、合格結果は得られますが、応答と要求データは得られません

私のサンプラーコードは次のとおりです。

package org.apache.jmeter.protocol.java.test;

import java.io.PrintWriter;
import java.io.Serializable;
import java.io.StringWriter;

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;



public class ExampleJavaSampler extends AbstractJavaSamplerClient implements Serializable {
    String mySvc = "";
    JavaSamplerContext context; 
    public Arguments getDefaultParameters(){
        Arguments arg = new Arguments();
        arg.addArgument("url", "http://www.url.com:5252/Switch/Download");
        arg.addArgument("e_type", "bank");
        arg.addArgument("e_id", "4");
        arg.addArgument("b_id", "1");
        arg.addArgument("a_id", "0002");
        arg.addArgument("link_branch", "");
        arg.addArgument("terminal_id", "");
        arg.addArgument("version", "10");
        arg.addArgument("entity", "100");
        System.out.println("inside default");
        return arg;     
    }

    public void setupTest(JavaSamplerContext context) {

        System.out.println("inside Setup");

    }


    public SampleResult runTest(JavaSamplerContext context) {

        System.out.println("Inside Run test:");
        String urls = context.getParameter("url");
        String e_type = context.getParameter("e_type");
        String e_id = context.getParameter("e_id");
        String b_id = context.getParameter("b_id");
        String a_id = context.getParameter("a_id");
        String l_branch = context.getParameter("e_type");
        String t_id = context.getParameter("e_type");
        String oion = context.getParameter("e_type");
        String entity = context.getParameter("e");



        SampleResult result = new SampleResult();
        result.getURL();
        result.setSampleLabel("Test Result");
        result.setDataType(SampleResult.TEXT);
        result.sampleStart();
        try{
         java.net.URL url = new java.net.URL(urls+"?=e_type="+e_type+"&e_id="+e_id+"&b_id="+b_id);
         System.out.println(url);
         java.net.HttpURLConnection connection = (java.net.HttpURLConnection)url.openConnection(); // have to cast connection
         connection.setRequestMethod("POST");
         connection.connect();

         result.sampleEnd(); // stop stopwatch
         result.setSuccessful( true );
         result.setResponseMessage( "Successfully performed action" );
         result.setResponseCodeOK(); // 200 code
     } catch (Exception e) {
         result.sampleEnd(); // stop stopwatch
         result.setSuccessful( false );
         result.setResponseMessage( "Exception: " + e );

         // get stack trace as a String to return as document data
         java.io.StringWriter stringWriter = new java.io.StringWriter();
         e.printStackTrace( new java.io.PrintWriter( stringWriter ) );
         result.setResponseData( stringWriter.toString() );
         result.setDataType( org.apache.jmeter.samplers.SampleResult.TEXT );
         result.setResponseCode( "500" );
     }

        return result;
    }
    void teardownTest() {
        System.out.println("inside tear Down:");
    }

}

このコードの後、.jarファイルを作成して lib/ext. 次に、Javarequest を呼び出し、そこにすべてのパラメーターが表示されます。次に、このテスト計画を実行し、成功メッセージを取得しました。結果はありません。

これは正しい方法ですか、それとも結果を得るためにそこに何かを追加する必要がありますか?

4

1 に答える 1

1

私はすでにここで回答しました。

tryブロック内でresult.setResponseData() を呼び出す必要があります。そうしないと、成功時に何も表示されません。「View Results Tree」リスナーの「Response Data」部分は、コードに従ってエラーが発生した場合にのみ入力されます。

于 2013-11-11T18:13:42.117 に答える