Проблема в скрипте JSR223, постпроцессоре JSR223: javax.script.ScriptException - PullRequest
0 голосов
/ 04 марта 2019

Я использую Jmeter 5.0, где у меня есть часть кода Java, написанного внутри JSR223 PostProcessor.Код выглядит следующим образом -

import java.util.Map;
import java.util.HashMap;


Map gamePlayHistoryMap = new HashMap();
gamePlayHistoryMap.put(${playerId}, ${GameplayHistoryId});
props.put("GamePlayHistoryMap", gamePlayHistoryMap);

Map payLevelDetailsMap = new HashMap();
payLevelDetailsMap.put(${playerId}, ${PayLevelDetails});
props.put("PayLevelDetailsMap", payLevelDetailsMap);

Однако, когда я выполняю план тестирования, в консоли появляется следующая ошибка -

javax.script.ScriptException: В файле:встроенная оценка: import java.util.Map; import java.util.HashMap; Map gamePlayHistoryMap = new H . . . '' Encountered "( 107 , )" at line 6, column 23. in inline evaluation of: import java.util.Map;import java.util.HashMap;Карта gamePlayHistoryMap = new H.,,'' в строке № 6

Может ли кто-нибудь помочь мне указать, где я мог ошибиться?

Ответы [ 3 ]

0 голосов
/ 04 марта 2019
  1. Начиная с JMeter 3.1, вы должны использовать язык сценариев Groovy для , изучая детали вашего исключения, вы обнаружите, что вы используете java, который не является реальной Java, это интерпретатор Beanshell, которая имеет худшую производительность по сравнению с Groovy , и вам нужно придерживаться синтаксиса Java 5.
  2. Не встраивать Функции и / или переменные JMeter в сценарии, так как они могут быть преобразованы во что-то, вызывающее ошибки сценария, и в случае Groovy они конфликтуют с шаблонами GString и кэшированием компиляцииособенность.Используйте vars сокращение для JMeterVariables класса, чтобы прочитать существующие значения переменных и создать новые, т.е. замените эту строку:

    gamePlayHistoryMap.put(${playerId}, ${GameplayHistoryId});
    

    этой:

    gamePlayHistoryMap.put(vars.get('playerId'), vars.get('GameplayHistoryId'));
    
0 голосов
/ 05 сентября 2019

Вам не хватает определения ключа / значения карты.

Map <String, String> gamePlayHistoryMap = new HashMap<>();
gamePlayHistoryMap.put(${playerId}, ${GameplayHistoryId});

Не уверен насчет ответа:

Не используйте $ {} в сценариях JSR223, используйтевместо этого vars.get ("")

не уверен, что это как-то связано с ним.

0 голосов
/ 04 марта 2019

Не используйте ${} в сценариях JSR223, вместо этого используйте vars.get("") для получения переменных

gamePlayHistoryMap.put(vars.get("playerId"), vars.get("GameplayHistoryId"));

Кажется, что GameplayHistoryId пусто, в таком случае добавьте значение по умолчанию в JSONExtractorили не пройден тест

См. рекомендации JMeter для сценариев JSR223 :

В этом случае убедитесь, что сценарий не использует переменную, использующую ${varName} в качестве кэшированиябудет принимать только первое значение ${varName}.Вместо этого используйте: vars.get("varName")

...