我是一个jmeter小白,用jmeter跑自动化,在beanshell内嵌java代码的jar
在java中用main方法能正常运行,但是打包成jar 放到beanshell中一直报错,不通过,并且不能直观的看到是什么问题,怎么定位问题~~~
ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import com.jmeter.*; import org.json.*; import com.qxy.tester.execute.*; import . . . '' : Method Invocation v2.excelModeIntegrationTest11
2020-12-14 17:56:38,919 WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import com.jmeter.*; import org.json.*; import com.qxy.tester.execute.*; import . . . '' : Method Invocation v2.excelModeIntegrationTest11
一直提示该类的方法中间错误
1,一定要把jar引用用jmeter中,如下方法(怎么引用见其他用户写的 https://www.cnblogs.com/uncleyong/p/11475577.html)
方式一:把jar包加入到classpath
方式二:把jar包放到lib/ext下
方式三:把jar包放到自定义目录下
2,每次加入新jar ,或者替换jar时 一定要重启jmeter,windows直接把jmeter关掉重新打开,linux用停止与启动命令
3,Java中该方法中使用的jar要全部引用到jmeter中来,不用有jar包冲突(比如,java中使用net.sf.json,jmeter中用org.json)
4,import 一定要引用全,缺少会报错,找不到某某类,加上就好了
5,如果还是有异常怎么解决呢?缺少Java中该方法引用的jar,但是不知缺少哪一个,(我java用的是maven引入很多包)
在java代码的关键节点上打上log,用jmeter执行 看哪一行,看哪个日志没出现,如下:在jmeter中报错因为初始化不成功了
把报错的几行拿出来放到jmeter中的beanshell处理器中运行
JmeterExcelReadBeanUtils a= new JmeterExcelReadBeanUtils();
a.exce(File file);
肯定会异常,在jmeter中查看异常,如果还是上面一样的错误Method Invocation a.exce,在JmeterExcelReadBeanUtils调用的方法exce中重新加入日志定位到哪个节点不通,一步一步,就会知道缺少哪个jar(越到底层,jmeter错误中会明确说明找不到哪个jar),加入缺少的jar 重启服务重新执行jmeter,直到解决问题
6,如果是简单的java用例 ,可以把Java下用到的所有jar,全部一次性进入到jmeter中,再有问题再执行上面的步骤(前提是java中运行正常)
7,如果是第一次没有运行成功过,再出现异常 检查一个运行环境版本号之类的。
jmeter小白,有更简便方案定位问题的大神请指教~~~~~