Jmeter BeanShellSampler error: Error invoking bsh method: eval import org.apache.commons.io.FileUtils

Jmeter BeanShellSampler error: Error invoking bsh method: eval import org.apache.commons.io.FileUtils

我使用 BeanShell 代码在 jmeter 中加载 100 个 sql 文件:

   import org.apache.commons.io.FileUtils;
    
    File folder = new File("D:\sql99");
    File[] sqlFiles = folder.listFiles();
    for (int i = 0; i < sqlFiles.length; i++) {
        File sqlFile = sqlFiles[i];
        if (sqlFile.isFile()) {
            vars.put("query_" + i,sqlFile.getName(), 
             FileUtils.readFileToString(sqlFiles[i]));
        }
    }

但得到错误信息:

17:42:03,301 错误 o.a.j.u.BeanShellInterpreter:调用 bsh 方法时出错:eval 源文件:内联评估:``import org.apache.commons.io.FileUtils;文件夹=新文件("D:\sql99");菲。 . . '' : 方法调用错误:在 class'org.apache.jmeter.threads.JMeterVariables'

中找不到方法 put( java.lang.String, java.lang.String, java.lang.String )

我想在 jmeter 结果树中获取每个 sql 的执行时间。如何修复代码?

谢谢!

您正在尝试调用 JMeterVariables.put() 函数,该函数接受 2 个字符串作为传递 3 个字符串的参数

正确的语法是vars.put("variable-name", "variable-value");所以你需要决定如何修改这一行:

vars.put("query_" + i, sqlFile.getName(), FileUtils.readFileToString(sqlFiles[i]));

所以它将只包含 2 个参数而不是 3 个。

since JMeter 3.1 it's recommended to use JSR223 Test Elements and Groovy language for scripting 主要是出于性能原因,因此它可能是一个很好的切换选项(假设您使用 vars.put() 函数解决了问题,相同的代码将在 Groovy 中工作而无需更改呼叫)