2016-07-11 17 views
0

我正在通過擴展AbstractJavaSamplerClient開發JMeter的Java請求採樣器。該測試是這樣的:jmeter:AbstractJavaSamplerClient - 對所有線程只進行一次setUpTest測試

public class JmeterTest extends AbstractJavaSamplerClient { 
    public void setupTest(JavaSamplerContext context) { 
     System.out.println("Test setup"); 
    } 

    public SampleResult runTest(JavaSamplerContext context) { 
     SampleResult result = new SampleResult(); 
     System.out.println("Test.."); 
     result.setSuccessful(true); 
     result.setResponseData("Success"); 
    } 

    public void teardownTest(JavaSamplerContext context) { 
     System.out.println("Test cleanup"); 
    } 
} 

我創建了一個罐子出這個測試類的,並指出它通過JMeter的UI(通過Java請求採樣)。在我的情況下,問題是當我運行測試5 users,setUpTest & tearDownTest方法被調用爲每個用戶按設計。

是否存在setUp和Cleanup方法只針對線程組中的所有線程調用一次的任何設置。我的要求是做安裝和清理只有一次所有線程

回答

1

以下是選項,你可以嘗試一下:

  1. setUp Thread Group
  2. 分別執行安裝操作在同一線程組分別執行安裝操作。把安裝邏輯下If Controller並使用${__BeanShell(vars.getIteration() == 1)}作爲條件
  3. 修改像您的代碼:

    public void setupTest(JavaSamplerContext context) { 
        if (JMeterContextService.getContext().getVariables().getIteration() == 1) { 
         System.out.println("Test setup"); 
        } 
    } 
    

兩個點2和3假定設置代碼將僅在通過測試的第一次迭代中被執行每個線程。請記住JMeterVariables.getIteration()數字只有在發生Thread Group級循環時纔會增加。

+0

非常好,謝謝。選項1現在將解決我的問題。我會閱讀更多關於2和3。 – sysuser

相關問題