Как запустить группу потоков Jmeter в тесте Junit

Привет всем, у меня есть вопрос о запуске Jmeter в качестве шага в Junit, Возможно ли, чтобы в Junit вызвать файл JMX и запустить его в Jmeter? и все будет сделано от затмения?

Например: шаг 1 проверить данные в БД шаг 2 получить свойства шаг 3 данные о пожаре через Jmeter шаг 4 проверьте данные в Junit

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
756
2

Ответы 2

Это должно быть возможно с использованием JMeter API.

  1. Убедитесь, что у вас есть все .jars из папок "lib" и "lib / ext" вашей установки JMeter в пути к классам вашего проекта JUnit.
  2. Используйте класс StandardJMeterEngine, чтобы запустить свой тест, например:

    import org.apache.jmeter.engine.StandardJMeterEngine;
    import org.apache.jmeter.reporters.ResultCollector;
    import org.apache.jmeter.reporters.Summariser;
    import org.apache.jmeter.save.SaveService;
    import org.apache.jmeter.util.JMeterUtils;
    import org.apache.jorphan.collections.HashTree;
    import org.junit.Test;
    
    import java.io.File;
    
    public class YourJUnitTestClass {
    
        @Test
        public void runJMeter() throws Throwable {
            StandardJMeterEngine jmeter = new StandardJMeterEngine();
            JMeterUtils.loadJMeterProperties("/path/to/your/jmeter/bin/jmeter.properties");
            JMeterUtils.setJMeterHome("/path/to/your/jmeter");
            JMeterUtils.initLocale();
            SaveService.loadProperties();
            HashTree testPlanTree = SaveService.loadTree(new File("/path/to/your/jmeter/Test.jmx"));
            Summariser summer = null;
            String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
            if (summariserName.length() > 0) {
                summer = new Summariser(summariserName);
            }
            String logFile = "/path/to/result.jtl";
            ResultCollector logger = new ResultCollector(summer);
            logger.setFilename(logFile);
            testPlanTree.add(testPlanTree.getArray()[0], logger);
            jmeter.configure(testPlanTree);
            jmeter.run();
        }
    }
    

Дополнительная информация: Пять способов запустить тест JMeter без использования графического интерфейса JMeter

Вы пытаетесь выполнить JMeter внутри тестов JUnit, что является неправильным подходом,

Поскольку JMeter - это в основном инструмент производительности

Apache JMeter may be used to test performance both on static and dynamic resources, Web dynamic applications. It can be used to simulate a heavy load on a server, group of servers, network or object to test its strength or to analyze overall performance under different load types.

И junit не подходит для теста производительности

JUnit is designed for unit testing. There are lot of things that need to be taken care while writing performance tests in Java

Что вы можете сделать Если вы хотите, чтобы модульное тестирование с использованием JMeter, было добавлено модульное тестирование внутри / с использованием JMeter с помощью Сэмплер JUnit

Classname the name of the class to test. The sampler will scan the jar files in jmeter/lib/ext and jmeter/lib/junit for classes extending JUnit's TestCase.

Также более чем нормально иметь несколько инструментов для выполнения различных типов тестирования.

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