6

JMeter 2.7 で JUnit テストを実行しようとしています。ただし、JUnit サンプラーのドロップダウンでテスト クラスを選択すると、それらは表示されません。私が見つけたように、それはテストクラスが別のクラスから拡張されているためです(AbstractJUnit4SpringContextTests基本クラスであり、その間に便利なメソッドを提供するさまざまな抽象クラスがあります)。これらの基底クラスから拡張されていないテスト クラスを選択できます。

テスト クラスを含む JAR ファイルは Maven (test-jar) によって作成され、すべての依存関係を含む JAR は maven fatjar プラグインによって作成されます。どちらの jar も JMeter/lib/junit ディレクトリに配置されます。

JMeter のマニュアルには、すべてのテスト クラスは JUnit テスト クラスから拡張する必要があると書かれていることは知っていますが、それは JUnit3 にのみ当てはまるようです。JUnit4 では、JMeter はその要件を必要としません。もちろん、すべてのテストを書き直して、基本クラスから拡張する必要がないようにすることもできますが、それは大きなメンテナンスの問題を引き起こします。では、基本クラスから拡張された JMeter を使用して JUnit テストを実行するにはどうすればよいでしょうか。

UDPATE 2012-08-09

PMD のヒントのおかげで、依存関係を 1 つずつ JMeter の lib フォルダーにコピーし、GUI にすべての単体テストが表示されるようになりました。それが可能になる前に、いくつかの問題を自分で解決する必要がありました。

  • logkit-1.0.1.jar をフォルダーにコピーすると、JMeter GUI が起動しなくなりました。理由がわかりません。エラーやログ メッセージは表示されませんでした。JVM が開始され、終了しました。
  • 春のテストパッケージの古いバージョンを導入したMavenの依存関係によって引き起こされたいくつかのバージョンの競合がありました。その結果、いくつかのテスト クラスが同じ名前の古い基本クラスから拡張されました。pom ファイルでこれらの依存関係を除外すると役立ちました。

JUnit テスト ケースを実行できるようになりました。ただし、私のクラスのいくつかの参照には@Resource. NullPointerExceptionJMeter の Testrunner は、これらの参照を挿入していないようです。JMeterログに見られるように、参照がアクセスされるたびに a がスローされるためです。では、JMeter にこれらの依存関係を注入させるにはどうすればよいでしょうか?

4

4 に答える 4

4

junit クラスを lib/junit フォルダーに配置し、依存関係を lib フォルダーに配置する必要があります。

これらのツールは meta-inf からファイルを削除したり、すべての jar から 1 つだけを保持したり、各 jar に 1 つだけスプリングを挿入したりすることがあるため、fatjar を使用しないでください。

すべての jar を lib フォルダーに 1 つずつ追加します。

jmeter ログをチェックして、例外があるかどうかを確認します。

それでも失敗する場合は、jmeter ユーザー リストで質問してください。回答が得られない場合は、簡単なテスト ケースを作成してバグを開いてください。

于 2012-08-06T13:10:40.943 に答える
0

Jmeter 4.0 では、JMeter の lib フォルダに依存関係を配置する代わりに、「user.classpath」プロパティを介して依存関係の場所へのパスを指定できました。このプロパティは、JMeter インストールの /bin フォルダの下にある「user.properties」ファイルにあります。

パス項目は、jar ファイルまたはディレクトリのいずれかです。そのようなディレクトリ内の jar ファイルはすべて自動的に含まれ、サブディレクトリ内の jar ファイルは無視されます。

パスを追加するときは注意を払い、プラットフォームのパスセパレータ (Java では java.io.File.separatorChar) を使用して複数のパスを区切ります。

#Example for windows (; separator)
#user.classpath=../classes;../lib;../app1/jar1.jar;../app2/jar2.jar

#Example for linux (:separator)
#user.classpath=../classes:../lib:../app1/jar1.jar:../app2/jar2.jar

user.classpath=C:/git/adf-bpm-autotesting-tool/libs;C:/git/adf-bpm-autotesting-tool/libs/selenium-tools;C:/git/adf-bpm-autotesting-tool/libs/selenium-2.52.0;C:/git/adf-bpm-autotesting-tool/libs/selenium-2.52.0/libs

jmeter gui の起動中の正しい結果として、次のような jmeter.log レコードが表示されます。

2019-04-08 18:51:46,871 INFO o.a.j.JMeter: Adding to classpath and loader: C:/git/adf-bpm-autotesting-tool/libs
2019-04-08 18:51:46,872 INFO o.a.j.JMeter: Adding to classpath and loader: C:/git/adf-bpm-autotesting-tool/libs/selenium-tools
2019-04-08 18:51:46,873 INFO o.a.j.JMeter: Adding to classpath and loader: C:/git/adf-bpm-autotesting-tool/libs/selenium-2.52.0
2019-04-08 18:51:46,873 INFO o.a.j.JMeter: Adding to classpath and loader: C:/git/adf-bpm-autotesting-tool/libs/selenium-2.52.0/libs

その後、JUnit Request Sample ですべての junit テストを見つけることができます。

于 2019-04-08T15:57:33.420 に答える
-1

Teinacher が書いたように、JUnit テストは、すべてのプロジェクトの依存関係 (すべての .jar ファイル) を JMeter の /lib ディレクトリにコピーした後、JMeter に表示されます (JMeter の再起動が必要です)。

于 2014-01-20T10:19:30.677 に答える