1. 程式人生 > >10.Jmeter-二次開發,實現自定義函式外掛

10.Jmeter-二次開發,實現自定義函式外掛

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

}