Запуск 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 должен работать нормально, если выполнены следующие предварительные условия

  1. Ваш тест с зависимостями находится в classpath JMeter.
  2. Перезапуск JMeter необходим для подбора новых библиотек
  3. Вам необходимо указать полное имя пакета плюс полное имя класса (или подстановочный знак) для импорта.

    Или

    import com.x.foo.client.JMeterTest;
    

    или же

    import com.x.foo.client.*;
    
  4. И, наконец, рекомендуется использовать JSR223 Sampler и использовать "groovy" в качестве языка. Интерпретатор Beanshell имеет серьезные проблемы с производительностью, поэтому используйте его для чего-то очень "легкого", например, для изменения переменных, преобразования переменных в свойства и т. Д. Для генерации реальной нагрузки используйте JSR223 и groovy, так как он реализует интерфейс Compilable, и, следовательно, вы можете добиться производительности, аналогичной нативной Java код. См. Beanshell против JSR223 против Java JMeter Scripting: снижение производительности, которого вы так долго ждали! Руководство для подробного объяснения, бенчмаркинга и инструкций по установке поддержки движка скриптов Groovy.

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