2016-08-09 8 views
0

でGUIモードで完璧に動作します:私は実行できるように、私のCSVファイルの行数を取得するにはBeanShellのスクリプトでエラーが発生しますが、それは、私は次のスクリプトを実行しようとしたのJMeter

import org.apache.commons.io.FileUtils; // necessary import 
int lines = FileUtils.readLines(new File("${testPlanFileDir}/csv/test_smtp_save.csv")).size() - 1; // get lines count 
vars.put("lines", String.valueOf(lines)); // store the count into "lines" variable 

をCSVファイルの行数に応じたループ。

上記のスクリプトはGUIモードから実行すると完璧に動作しますが、端末から実行すると次のエラーが発生します。

ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval 
Sourced file: inline evaluation of: 
``import org.apache.commons.io.FileUtils; // necessary import int lines = FileUtil . . . '' 
: Typed variable declaration : Method Invocation FileUtils.readLines 
+0

あなたのコードを試しましたが、JMeter 2.13で正常に動作します。 –

答えて

0

どうすればこの値を得ることができますか。${testPlanFileDir}可変値?それを除いて、コードは良く見えます。

あなたはより多くの関連するエラーメッセージを持っているしたい場合は、try blockにあなたのコードを入れてみてくださいすることができます

import org.apache.commons.io.FileUtils; 

try { 
    int lines = FileUtils.readLines(new File("${testPlanFileDir}/csv/test_smtp_save.csv")).size() - 1; 
    vars.put("lines", String.valueOf(lines)); 
} 
catch (Throwable ex) { 
    log.error("Error in Beanshell", ex); 
    throw ex; 
} 

そしてjmeter.logファイルに見て - それは「通常の」スタックトレースが含まれます。

はまた、あなたのBeanShellスクリプトの冒頭にdebug()コマンドを追加することができます - それはで

+0

次のbeanshellコードからtestPlanFileDirを取得します。 import org.apache.jmeter.gui.GuiPackage; import org.apache.commons.io.FilenameUtils; 文字列testPlanFile = GuiPackage.getInstance()。getTestPlanFile(); 文字列testPlanFileDir = FilenameUtils.getFullPathNoEndSeparator(testPlanFile); vars.put( "testPlanFileDir"、testPlanFileDir); log.info( "testPlanFileDir:" + testPlanFileDir); –

+0

私が期待しているのは、GUI以外のモードでテストを実行すると 'GuiPackage'がヌルなので、JMeterの作業フォルダを' FileServer.getFileServer()。getBaseDir();に再考する方法です。 –

0

$ {testPlanFileDirを}に置き換え、よりBeanShellの関連のヒントやトリックのためHow to Use BeanShell: JMeter's Favorite Built-in Componentを参照してくださいstdout

にデバッグ出力を切り替えることができます:

vars.get( "testPlanFileDir")

あなたが見る、JMeterの3.0に組み込まれているJSR223 +のGroovy +キャッシュの賛成でBeanShellの使用を避ける必要があります。

+0

testPlanFileDirは変数。どうすればvars.getを使うことができますか? –

0

私が取得するために、これを使用.jmxファイルの現在のディレクトリ。 宣言された変数TestPlanFileDir as;

${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)} 
関連する問題