繁体   English   中英

Jmeter beanshell Sampler_调用bsh方法时出错

[英]Jmeter beanshell Sampler_ Getting Error invoking bsh method

我们可以使用vars.put添加数组列表的成员吗?

下面是我的代码在第10行第25列引发异常,错误是:

调用bsh方法时出错:eval在文件中:内联评估:``import java.util.List; 导入java.util.ArrayList; public static void main(Strin。。…在第10行第25列遇到“ vars”。

import java.util.List;
import java.util.ArrayList;
public static void main(String[] ard)
{
    String OperationNme = ${op};
    String[] serviceTypeVal = {12,19,20,21,22,23,26,27,28,31,32,11};
    String serviceType;
    switch (OperationNme) {
            case 1:  OperationNme.contains("sdv")
                     vars.put("serviceType",serviceTypeVal[0]);
                     break;
            case 2:  OperationNme.contains("doorUnlock")
                     vars.put("serviceType",serviceTypeVal[1]);
                     break;
            case 3:  OperationNme.contains("doorLock")
                     vars.put("serviceType",serviceTypeVal[2]);
                     break;
            case 4:  OperationNme.contains("hornLights")
                    vars.put("serviceType",serviceTypeVal[3]);
                     break;
            case 5:  OperationNme.contains("engineOn")
                     vars.put("serviceType",serviceTypeVal[4]);
                     break;
            case 6:  OperationNme.contains("engineOff")
                     vars.put("serviceType",serviceTypeVal[5]);
                     break;
            case 7:  OperationNme.contains("dtc")
                     vars.put("serviceType",serviceTypeVal[6]);
                     break;
            case 8:  OperationNme.contains("vrc")
                     vars.put("serviceType",serviceTypeVal[7]);
                     break;
            case 9:  OperationNme.contains("vhc")
                     vars.put("serviceType",serviceTypeVal[8]);
                     break;
            case 10: OperationNme.contains("chgPrf")
                     vars.put("serviceType",serviceTypeVal[9]);
                     break;
            case 11: OperationNme.contains("evNotif")
                     vars.put("serviceType",serviceTypeVal[10]);
                     break;
            case 12: OperationNme.contains("vehStatus")
                     vars.put("serviceType",serviceTypeVal[11]);
                     break;
            default: OperationNme.contains("Invalid Operation Name")
                     break;
        }



}

您的测试存在多个问题:

  1. String[] serviceTypeVal = {12,19,20,21,22,23,26,27,28,31,32,11}; -无效的声明
  2. 如果打开字符串OperationNme ,则不能使用case 1case 2等,因为类型不匹配
  3. Beanshell不支持打开字符串

因此,您应该将代码重构为如下所示:

String OperationNme = vars.get("op");
String[] serviceTypeVal = {"12", "19", "20", "21", "22", "23", "26", "27", "28", "31", "32", "11"};       
if (OperationNme.contains("sdv")) {
    vars.put("serviceType", serviceTypeVal[0]);
}
if (OperationNme.contains("doorUnlock")) {
    vars.put("serviceType", serviceTypeVal[1]);
} 
// etc. 

有关JMeter中 Beanshell脚本的更多信息,包括疑难解答建议,请参见如何使用BeanShell:JMeter的“最喜欢的内置组件”指南。

实际上,建议使用JSR223测试元素和Groovy语言进行脚本编写。 安装就像下载groovy-all-*。jar一样简单,将其放入JMeter安装的/ lib文件夹中并重新启动JMeter。

之后,您将能够从“语言”下拉菜单中选择“常规”,它正在得到积极的开发和支持,因此它比Beanshell更兼容Java。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM