Jmeter beanshell Sampler_ Getting Error при вызове метода bsh

Мы можем использовать vars.put для добавления членов списка массивов?

Ниже мой код, который выдает исключение в строке 10, столбце 25 и ошибка:

Ошибка при вызове метода bsh: eval В файле: встроенная оценка: ``import java.util.List; import java.util.ArrayList; public static void main(Strin . . '' Обнаружены "vars" в строке 10, столбец 25.

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 ответ

Есть несколько проблем с вашим тестом:

  1. String[] serviceTypeVal = {12,19,20,21,22,23,26,27,28,31,32,11}; - недействительная декларация
  2. Если вы включите OperationNme какую строку вы не можете использовать case 1, case 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. 

См. Как использовать BeanShell: руководство по использованию любимых встроенных компонентов JMeter для получения дополнительной информации о сценариях Beanshell в JMeter, включая рекомендации по устранению неполадок.

На самом деле для сценариев рекомендуется использовать тестовые элементы JSR223 и язык Groovy. Установка так же проста, как загрузка groovy-all-*. Jar, перетаскивание его в папку /lib вашей установки JMeter и перезапуск JMeter.

После этого вы сможете выбрать "groovy" из выпадающего списка "Language", он активно разрабатывается и поддерживается, поэтому он более совместим с Java, чем Beanshell.

Другие вопросы по тегам