27. JUnit サンプラーのチュートリアル¶
このチュートリアルでは、新しい JUnit Sampler for JMeter の基本的な設計、機能、および使用法について説明します。サンプラーは、JMeter のバージョン 2.1.2 リリースで導入されました。以前のリリースにはサンプラーがありません。
27.1 設計¶
現在の実装では、 oneTimeSetUp やoneTimeTearDown など、標準の JUnit 規則と拡張機能がサポートされています。ご要望に応じて、その他の機能を追加することもできます。サンプラーは JavaSampler と同じように機能しますが、いくつかの違いがあります。
- JMeter のテスト インターフェイスを使用するのではなく、JUnit の TestCaseクラスを拡張するクラスの jar ファイルをスキャンします。これは、任意のクラスまたはサブクラスを意味します。
- JUnit テスト jar ファイルがjmeter/libではなく jmeter /lib/junitにコピーされる
- JUnit サンプラーは、構成に名前と値のペアを使用しません。サンプラーは
、 setUpとtearDownがテストを正しく構成すると想定しています。
注: JMeter が使用できるように、setUpメソッドとTeaDownメソッドはpublicとして宣言する必要があります。
- サンプラーはテスト メソッドの経過時間のみを測定し、 setUpとtearDownは含まれません。
- テスト メソッドが呼び出されるたびに、JMeter は結果をリスナーに渡します。
- oneTimeSetUpとoneTimeTearDownのサポートはメソッドとして行われます。JMeter はマルチスレッドであるため、 maven と同じ方法でoneTimeSetUp / oneTimeTearDownを呼び出すことはできません。
- サンプラーは、予期しない例外をエラーとして報告します。
27.2 機能¶
ここでは機能について説明します。
- 名前
- サンプルの名前。これは、すべての JMeter サンプラーと同じです。
- パッケージ フィルター
- クラスをパッケージ名でフィルタリングする方法を提供します。
- クラス名
- テストするクラスの名前。サンプラーは、 jmeter/lib/extおよびjmeter/lib/junitの jar ファイルをスキャンして、 JUnit のTestCaseを拡張するクラスを探します。
- コンストラクタ文字列
- テスト クラスの文字列コンストラクタに渡す文字列。
- 試験方法
- サンプラーでテストするメソッドの名前。
- 成功メッセージ
- 成功の意味を示す説明メッセージ。
- 成功コード
- テストが成功したことを示す一意のコード。
- 失敗メッセージ
- 失敗の意味を示す説明メッセージ。
- 失敗コード
- テストが失敗したことを示す一意のコード
- エラーメッセージ
- エラーの説明
- エラーコード
- エラーのコード。一意である必要はありません
- setUpとtearDownを呼び出さないでください
- setUpとtearDownを呼び出さないようにサンプラーを設定します。デフォルトでは、setUpと
TeaDownを呼び出す必要があります。これらのメソッドを呼び出さないと、テストに影響を与え、不正確になる可能性があります。このオプションは注意して使用する必要があります。
選択したメソッドがoneTimeSetUpまたはoneTimeTearDownの場合、このオプションをオンにする必要があります。
- 追加アサーション エラー
- デフォルトでは、サンプラーはアサートの失敗を失敗メッセージに追加しません。結果ツリーでメッセージを表示するには、オプションをオンにします。
- 実行時例外を追加
- デフォルトでは、サンプラーは失敗メッセージに例外を追加しません。スタックトレースを表示するには、オプションを確認してください
サンプラーの現在の実装では、最初に文字列コンストラクターを使用してインスタンスを作成しようとします。テスト クラスで文字列コンストラクターが宣言されていない場合、サンプラーは空のコンストラクターを探します。以下の例:
パブリック クラス myTestCase { public myTestCase() {} }文字列コンストラクタ:
パブリック クラス myTestCase { public myTestCase(文字列テキスト) { スーパー(テキスト); } }
デフォルトでは、JMeter は成功/失敗のコードとメッセージにいくつかのデフォルト値を提供します。ユーザーは、一意の成功コードと失敗コードのセットを定義し、すべてのテストで均一に使用する必要があります。
27.3 使用法¶
ここでは短いステップバイステップです。
- JUnit テストを記述し、クラスを jar します
- jar ファイルをコピーしてjmeter/lib/junitディレクトリに貼り付けます。
- JMeter を起動
- テスト計画を選択
- 右クリック
- スレッドグループを選択
- を右クリック
- 名前に私の単体テストを入力してください
- JUnit テストのパッケージを入力してください
- テストしたいクラスを選択
- テストするメソッドを選択してください
- 成功メッセージに成功したテストを入力してください
- 成功コードに1000を入力
- 失敗メッセージにtest failedと入力
- 失敗コードに0001を入力
- スレッド グループの選択
- 右クリック [
JUnit サンプラーの利点の 1 つは、ユーザーがさまざまな単体テストから任意のメソッドを選択してテスト計画を作成できることです。これにより、さまざまなテスト シナリオを作成するためにユーザーが記述する必要があるコードの量が削減されます。テスト メソッドの基本セットから、JMeter の GUI を使用してさまざまなシーケンスとテストを作成できます。
例えば:
テスト計画 1
TestCase1.testImportCustomer TestCase2.testUpdateRandomCustomer TestCase1.testSelect100 TestCase2.testUpdateOrder TestCase1.testSelect1000
TestPlan2
TestCase1.testImportCustomer TestCase1.testSelect100 TestCase1.testSelect1000 TestCase2.testAdd100Customers
27.4 一般的なガイドライン¶
ここでは、JUnit テストを作成して JMeter とうまく連携させるための一般的なガイドラインをいくつか示します。JMeter はマルチスレッドで実行されるため、いくつかの点に留意することが重要です。
- スレッド セーフになるように、setUpメソッドとTeaDownメソッドを記述します。これは通常、静的メンバーの使用を避けることを意味します。
- テスト メソッドは、長い一連のアクションではなく、個別の作業単位にします。テスト方法を個別の操作に保つことで、テスト方法を組み合わせて新しいテスト計画を作成しやすくなります。
- テスト メソッドを相互に依存させることは避けてください。JMeter ではテスト メソッドを任意に順序付けできるため、実行時の動作はデフォルトの JUnit の動作とは異なります。
- テスト メソッドが構成可能な場合は、プロパティの保存場所に注意してください。Jar ファイルからプロパティを読み取ることをお勧めします。
- 各サンプラーはテスト クラスのインスタンスを作成するため、セットアップがoneTimeSetUpとoneTimeTearDownで行われるようにテストを記述します。
- クラスを選択してもメソッドが表示されない場合は、サンプラーがテスト クラスのインスタンスを作成するときに問題が発生したことを意味します。これをデバッグする最善の方法は、System.out をクラス コンストラクターに追加して、何が起こっているかを確認することです。