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; } }