在Jmeter的beanshell脚本中,执行报错,说方法调用失败,是那里的问题
Error invoking bsh method: eval Sourced file: inline evaluation of: `` import java.lang.reflect.*; import com.github.javafaker.*; Faker faker = n . . . '' : Method Invocation name.fullName
Problem in BeanShell script. org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: `` import java.lang.reflect.*; import com.github.javafaker.*; Faker faker = n . . . '' : Method Invocation name.fullName
这是脚本源代码
import java.lang.reflect.*;
import com.github.javafaker.*;
Faker faker = new Faker();
Name name = faker.name();
log.info("生成测试数据name:" + name.hashCode());
log.info("生成测试数据equals:" + name.equals(null));
int len = faker.name().getClass().getMethods().length;
log.info("方法数:" + len);
Method[] method = faker.name().getClass().getMethods();
log.info("方法数:" + method.length);
for(Method m : method){
log.info("方法名:{}, 参数个数:{}" , m.getName(), m.getParameterCount());
}
log.info("姓名" + name.fullName());
这是打印的日志完整信息
2023-08-23 09:42:49,234 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2023-08-23 09:42:49,234 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2023-08-23 09:42:49,235 INFO o.a.j.t.TestPlan: added D:\software\apache-jmeter-5.5\lib\custom to classpath
2023-08-23 09:42:49,235 INFO o.a.j.t.TestPlan: added D:\software\apache-jmeter-5.5\lib\ext to classpath
2023-08-23 09:42:49,239 INFO o.a.j.t.TestPlan: added D:\software\apache-jmeter-5.5\lib to classpath
2023-08-23 09:42:49,239 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2023-08-23 09:42:49,323 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : 线程组
2023-08-23 09:42:49,323 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group 线程组.
2023-08-23 09:42:49,323 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2023-08-23 09:42:49,323 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 delayedStart=false
2023-08-23 09:42:49,329 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2023-08-23 09:42:49,330 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2023-08-23 09:42:49,330 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2023-08-23 09:42:49,333 INFO o.a.j.u.BeanShellTestElement: 生成测试数据name:1431847124
2023-08-23 09:42:49,333 INFO o.a.j.u.BeanShellTestElement: 生成测试数据equals:false
2023-08-23 09:42:49,333 INFO o.a.j.u.BeanShellTestElement: 方法数:18
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法数:18
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:name, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:suffix, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:username, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:title, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:fullName, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:nameWithMiddle, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:firstName, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:lastName, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:prefix, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:wait, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:wait, 参数个数:2
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:wait, 参数个数:1
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:equals, 参数个数:1
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:toString, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:hashCode, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:getClass, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:notify, 参数个数:0
2023-08-23 09:42:49,334 INFO o.a.j.u.BeanShellTestElement: 方法名:notifyAll, 参数个数:0
2023-08-23 09:42:49,334 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: `` import java.lang.reflect.*; import com.github.javafaker.*; Faker faker = n . . . '' : Method Invocation name.fullName
2023-08-23 09:42:49,334 WARN o.a.j.m.BeanShellPreProcessor: Problem in BeanShell script. org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: `` import java.lang.reflect.*; import com.github.javafaker.*; Faker faker = n . . . '' : Method Invocation name.fullName
2023-08-23 09:42:49,343 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1
2023-08-23 09:42:49,343 INFO o.a.j.t.JMeterThread: Thread finished: 线程组 1-1
2023-08-23 09:42:49,344 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2023-08-23 09:42:49,344 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
打印日志看到是有fullName方法的
【以下回答由 GPT 生成】
问题分析: 根据给出的信息,可以看出该问题是在Jmeter中执行beanshell脚本时报错,报错信息为调用方法name.fullName()失败,具体错误是"Error invoking bsh method: eval Sourced file: inline evaluation of: import java.lang.reflect.; import com.github.javafaker.; Faker faker = n . . . '' : Method Invocation name.fullName"。根据完整日志的信息中能够看到,测试正在运行,但没有给出完整的报错信息。
问题解决方案:
检查JMeter版本:首先,确保使用的是最新版本的JMeter,可以到官网下载最新版,并将其安装。
检查Java版本:检查当前系统中所安装的Java版本,并确保是JMeter所支持的版本。JMeter要求Java版本至少为Java 8以上。
配置JMeter依赖:在JMeter安装目录的lib文件夹中,检查是否包含所需的依赖库文件。对于执行Java脚本,可能需要解决缺少Java Faker库的问题。查找并将所需的依赖库文件放置到lib文件夹中。
引入Java Faker库:根据给出的脚本代码,可以看到需要引入com.github.javafaker包。确保该包已经被正确添加到JMeter的类路径中。可以将所需的jar文件复制到lib/ext文件夹中。
检查脚本代码:检查脚本代码中是否存在语法错误、逻辑错误或其他错误。根据报错信息中提供的代码行数和具体方法调用,仔细检查该行代码是否正确。
日志输出:为了更详细地了解脚本执行过程中的错误原因,可以在脚本中添加更详细的日志输出。例如,在错误发生的地方添加更多的日志信息,以便了解具体出错的位置。
尝试使用其他脚本语言:如果以上步骤都不能解决问题,可以尝试使用其他脚本语言执行相同的功能。例如,尝试使用Groovy脚本替代BeanShell脚本。
如果以上解决方案都未能解决该问题,可能需要进一步调查错误日志和相关配置信息以获取更详细的问题描述和解决方案。
【相关推荐】