Jmeter01:自訂java取樣器

來源:互聯網
上載者:User

標籤:parse   conf   success   als   finally   上下文   str   重寫   define   

一、背景

  使用在Jmeter中,有自己的Java取樣器供我們使用,但是,如果需要在我們的Java採樣器引用自己的類,那麼定製自己的JAVA採樣器是一個不錯的選擇。當然我們同樣也可以重寫HTTP取樣器的方法,這裡以自訂java取樣器來舉例

二、步驟1. 將需要的包添加進你java項目的build path中

  需要添加進build path中的jar包為以下三個

ApacheJMeter_components.jarApacheJMeter_core.jarApacheJMeter_java.jar

  但是,由於擔心存在jar包的依賴問題,所以建議匯入所有的Jmeter安裝目錄\lib以及\lib\ext\下的jar檔案,導包步驟如下

 

2. 編寫自訂Java取樣器代碼

  在編寫自訂Java取樣器代碼之前,我自訂了一個Hello類,實現簡單的特定字串列印,代碼如下

package com.SelfDefined.Components;public class Hello {public String sayHello(){return "Hello";}public String sayHello2Person(String name){if (name == null || name.equals("")) {name = "nobody";}return (new StringBuilder()).append("Hello").append(name).toString();}public int sum(int a, int b) {return a + b;}}

  自訂Java取樣器代碼詳解:

  自訂java取樣器,需要用到Arguments、AbstractJavaSamplerClient、JavaSamplerContext、SampleResult這四個類,也需要重寫public Arguments getDefaultParameters(){}、public void setupTest(JavaSamplerContext arg0){}、public SampleResult runTest(JavaSamplerContext arg0){}、public void teardownTest(JavaSamplerContext arg0){}這些方法這些方法的作用如下:

2.1 public Arguments getDefaultParameters(){}

  定義需要輸入的變數及其預設值

2.2 public void setupTest(JavaSamplerContext arg0){}

  定義在指定測試前所需做的工作,可以為空白

2.3 public SampleResult runTest(JavaSamplerContext arg0){}

  執行測試時需要執行的函數

2.4 public void teardownTest(JavaSamplerContext arg0){}

  測試執行完畢後的資源清理工作

2.5 public static void main(String[] args ) {}

  主函數:運行時按照主函數定義的邏輯來執行測試案例

自訂Java取樣器代碼
package com.SelfDefined.Components;import java.security.Policy.Parameters;import org.apache.jmeter.config.Arguments;//這個類是用來定義和訪問參數的import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;//自訂Java取樣器需要繼承這個類import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;//Jmeter的上下文import org.apache.jmeter.samplers.SampleResult;//返回結果//需要自訂Java取樣器時繼承AbstractJavaSamplerClient類,如果需要重寫HTTP取樣器,則繼承其他的類public class MyComponents extends AbstractJavaSamplerClient{    private String a;    private String b;        private String resultData;        //這個方法用來定義java方法的入參    //param.addArgument("num1", "");表示入參參數名為num1,預設值為空白        //設定可用參數及預設值    public Arguments getDefaultParameters() {        Arguments param = new Arguments();        param.addArgument("num1", "");        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請求");        try {            sr.sampleStart();            Hello test = new Hello();            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();        } 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");//擷取變數num1的值,若為空白取預設值1,我試了一下沒啥用        params.addArgument("num2", "2");        JavaSamplerContext arg0 = new JavaSamplerContext(params);//建立Jmeter上下文        MyComponents test = new MyComponents();        test.setupTest(arg0);        test.runTest(arg0);        test.teardownTest(arg0);    }    }
3. 匯出jar包

  導包會有一個warning,不用管它

4. 重啟Jmeter即可在Java取樣器中看到我們定製的組件

 

5. 執行結果

 

Jmeter01:自訂java取樣器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.