我是一個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小白,有更簡便方案定位問題的大神請指教~~~~~