Запуск Java-класса с JMeter (Bean Shell)
Я написал Java-класс для использования в JMeter, упаковал проект как файл.jar и переместил этот файл в папку lib/ext в каталоге jmeter. Я видел документацию о том, как действовать, но они дают противоречивые ответы.
Первый способ - использовать BeanShell Sampler для импорта моего пакета и класса, создания объекта класса и запуска методов таким образом. Я использовал этот метод, используя примеры классов с более простой структурой файлов, чем у класса, который я хочу запустить. Примеры классов работают со следующим скриптом BeanShell.
import tools.JmeterTools;
JmeterTools jt = new JmeterTools();
jt.foo();
Когда я пытаюсь использовать этот метод для класса, который хочу запустить, он заявляет, что объявление переменной является ошибкой и класс не может быть найден. Я предполагаю, что это потому, что я не понимаю, что именно импортировать, так как структура файла в моем проекте немного странная.
Второй использует BeanShell PreProcessor, чтобы добавить jar в путь к классу. Этот метод мне вообще не удавалось, но я прочитал много рассказов других людей, которые нашли успех. Это работает следующим образом:
addClassPath("directory path to jar\lib\ext\foo.jar");
JMeterTest jtm = new JMeterTest();
jmt.test();
Кто-нибудь знает, какой способ будет работать лучше или какие-либо идеи о том, как исправить импорт?
Импорт, который я использовал в скрипте BeanShell, следующий:
import client.JMeterTest;
Строка пакета в верхней части моего класса выглядит следующим образом
import com.x.foo.client;
3 ответа
Для тех, кто имеет эту проблему в будущем. Ответы, данные другими, верны. Это не сработало для меня, потому что я забыл, что Maven не упаковывает файлы в тестовый каталог при создании jar.
Эта ссылка может помочь, если кто-нибудь сделает это в будущем. Создайте jar-тест вместе с файлом jar в тестовом пакете
Вы должны иметь свой файл JAR в JMETER_HOME/lib
папка.
lib/ext
для расширений / плагинов JMeter и т. д.
После того, как вы разместили свою банку, вам, возможно, придется перезапустить JMeter.
Запуск внешних классов из Beanshell должен работать нормально, если выполнены следующие предварительные условия
- Ваш тест с зависимостями находится в classpath JMeter.
- Перезапуск JMeter необходим для подбора новых библиотек
Вам необходимо указать полное имя пакета плюс полное имя класса (или подстановочный знак) для импорта.
Или
import com.x.foo.client.JMeterTest;
или же
import com.x.foo.client.*;
И, наконец, рекомендуется использовать JSR223 Sampler и использовать "groovy" в качестве языка. Интерпретатор Beanshell имеет серьезные проблемы с производительностью, поэтому используйте его для чего-то очень "легкого", например, для изменения переменных, преобразования переменных в свойства и т. Д. Для генерации реальной нагрузки используйте JSR223 и groovy, так как он реализует интерфейс Compilable, и, следовательно, вы можете добиться производительности, аналогичной нативной Java код. См. Beanshell против JSR223 против Java JMeter Scripting: снижение производительности, которого вы так долго ждали! Руководство для подробного объяснения, бенчмаркинга и инструкций по установке поддержки движка скриптов Groovy.