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 ответ
Есть несколько проблем с вашим тестом:
String[] serviceTypeVal = {12,19,20,21,22,23,26,27,28,31,32,11};
- недействительная декларация- Если вы включите
OperationNme
какую строку вы не можете использоватьcase 1
,case 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.
См. Как использовать BeanShell: руководство по использованию любимых встроенных компонентов JMeter для получения дополнительной информации о сценариях Beanshell в JMeter, включая рекомендации по устранению неполадок.
На самом деле для сценариев рекомендуется использовать тестовые элементы JSR223 и язык Groovy. Установка так же проста, как загрузка groovy-all-*. Jar, перетаскивание его в папку /lib вашей установки JMeter и перезапуск JMeter.
После этого вы сможете выбрать "groovy" из выпадающего списка "Language", он активно разрабатывается и поддерживается, поэтому он более совместим с Java, чем Beanshell.