10.Jmeter-二次開發,實現自定義函式外掛
阿新 • • 發佈:2019-02-14
1.前提:
有時候,Jmeter自帶的函式,可能不能滿足於業務的需求,這時候,我們可以自己寫一個函式外掛;
2.建立maven工程
一直next,輸入GroupID,ArtifactId->finsh
3.編輯pom.xml
建立好maven工程後,引入Jmeter的jar包,注意你本地Jmeter版本是幾,這裡<version></version>就寫幾
<dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>3.3</version> </dependency> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>3.3</version> </dependency>
4.建立一個package
實現擴充套件jmeterfunction,主要有兩點:
1.實現function的類的package宣告必須包含".functions"
2.需要繼承org.apache.jmeter.functions.AbstractFunction,並且實現相應的方法
5.擴充套件類AbstractFunction講解
public List<String> getArgumentDesc()
功能描述:顧名思義描述你寫的這個方法是幹嘛使的。
需要實現什麼功能。public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException
public String getReferenceKey()
返回function名稱public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException
設定引數,接收使用者傳遞的引數
5.程式碼講解
public class TicketNo extends AbstractFunction{ //新增方法描述 private static final List<String> desc = new LinkedList<String>(); static { desc.add("ticketNo"); } //function名稱 private static final String KEY = "__JddTicketNo"; private static final int num = 1; //傳入引數的值 private Object[] values; private Date data =new Date(); /**功能描述**/ public List<String> getArgumentDesc() { // TODO Auto-generated method stub return desc; } @Override public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { try { Thread.sleep(1000); String ticket = String.valueOf(data.getTime()) System.out.println("當前輸出"+ticket); return ticket; } catch (InterruptedException e) { // TODO Auto-generated catch block throw new InvalidVariableException(e); } } /** * 設定引數。接收使用者傳遞的引數 * @param collection * @throws InvalidVariableException * **/ @Override public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException { checkParameterCount(parameters, num); values = parameters.toArray(); } /**返回function名稱**/ @Override public String getReferenceKey() { return KEY; } }