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

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


调用bsh方法时出错:eval在文件中:内联评估:
``导入java.util.List;导入java.util.ArrayList;公共静态
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;
        }



}

最佳答案

您的测试存在多个问题:


String[] serviceTypeVal = {12,19,20,21,22,23,26,27,28,31,32,11};-无效的声明
如果打开OperationNme字符串,则不能使用case 1case 2等,因为其类型不匹配
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脚本的更多信息,包括疑难解答建议,请参见How to Use BeanShell: JMeter's Favorite Built-in Component指南。

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

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

关于java - Jmeter beanshell Sampler_调用bsh方法时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32560020/

10-10 06:06