2016-07-11 3 views
0

JMeterを使用してJavaリクエストサンプラーを開発しています。AbstractJavaSamplerClientを拡張しています。テストでは、このように書きます:jmeter:AbstractJavaSamplerClient - すべてのスレッドに対してsetUpTestを1回だけ実行します。

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

私は、このテストクラスの外にjarファイルを作成し、(Javaのリクエストサンプラー経由)のJMeter UIを通してそれを指摘しました。私の場合の問題は、私が5 users、setUpTest & tearDownTestのメソッドでテストを実行すると、デザインごとにすべてのユーザーに呼び出されます。

setUpとCleanupメソッドがスレッドグループ内のすべてのスレッドに対して一度だけ呼び出されるような設定はありますか。私の必要条件はです。すべてのスレッドに対して1回だけセットアップとクリーンアップを行います。ここで

答えて

1

はあなたが試すことができるオプションは次のとおりです。

  1. setUp Thread Group
  2. で別々にセットアップアクションを実行し、同じスレッドグループで別々にセットアップアクションを実行します。 If Controller下セットアップロジックを置くなど、コードを変更条件
  3. として${__BeanShell(vars.getIteration() == 1)}を使用する:両方の点2及び3は、セットアップコードにより、テストの最初の反復中にのみ実行されると仮定

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

各スレッド。 JMeterVariables.getIteration()の数字は、Thread Groupレベルループが発生した場合にのみ増分されることに注意してください。

+0

優秀、ありがとう。オプション1は今私の問題を解決します。私は2&3についてもっと読む予定です。 – sysuser

関連する問題