Sample這裡我用到主要JMeter的線程和報表,擴充了他的“Java請求”這個應用類別。要擴充此應用,要用到lib/ext/ApacheJMeter_java.jar,他封裝此應用。
首先,需要繼承ApacheJMeter_java.jar中的抽象類別AbstractJavaSamplerClient,它提供了四個抽象方法: void setupTest(JavaSamplerContext arg0),SampleResult runTest(JavaSamplerContext arg0), void teardownTest(JavaSamplerContext arg0), Arguments getDefaultParameters()。setupTest和teardownTest與JUnit中的類似,分別在測試的開始和結束時執行。 runTest為主要測試方法,所有測試程式都在這裡完成,JavaSamplerContext參數封裝測試中需要的所有外界資料(如配置資訊等)。其 SampleResult封裝了所有測試結果(如:測試是否成功?程式執行時間等),getDefaultParameters用於把測試的一些預設資料在程式運行前顯示到JMeter用戶端,這個可以和runTest配合使用,實現資料的呈現和配置。
下面為程式:
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;
import com.ebupt.wv.client.WVClient;
public class Login2 extends AbstractJavaSamplerClient {
private static String label = "userLogin"
private String name;
private String address;
public void setupTest(JavaSamplerContext arg0) {
System.out.println("setupTest");
}
public SampleResult runTest(JavaSamplerContext arg0) {
name = arg0.getParameter("name");
address = arg0.getParameter("address");
SampleResult sr;
sr = new SampleResult();
sr.setSampleLabel(label);
try{
sr.sampleStart(); //記錄程式執行時間,以及執行結果
sr.setSuccessful(true);
System.out.println("send over!");
}catch(Throwable e){
sr.setSuccessful(false);
}finally{
sr.sampleEnd();
}
return sr;
}
public void teardownTest(JavaSamplerContext arg0) {
}
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("name", "JMeter");
params.addArgument("address", "localhost");
return params;
}
}
其次,把寫好的應用打包,放到lib/ext下,JMeter運行時即可找到。同時還要把使用者自己編寫的應用所依賴的包放在lib下。運行JMeter。介面開啟後,右鍵“測試計劃”,添加線程組;右鍵“線程組”-添加-Sampler-Java請求,在類名稱處選擇剛才寫好的類。
這裡,可以同時添加多個線程組、多個java請求、同時可以添加監聽器用於輸出不同的的測試結果圖形、報表,各個請求之間可以用邏輯控制器進行執行流程的控制。
最後,點擊運行-啟動,儲存相應的項目,即可開始運行。運行時的資料,可以通過監聽器寫入檔案以便需要時產生報表。