Как включить дополнительную зависимость JAR при запуске файла JMeter с кодом Java? - PullRequest
0 голосов
/ 03 июля 2018

Итак, я создал папку в папке «resources» как JMeter home:

enter image description here

И у меня есть следующий код для запуска файла JMX:

// JMeter Engine
StandardJMeterEngine jmeter = new StandardJMeterEngine();

// Initialize Properties, logging, locale, etc.
File jmeterProperties = new ClassPathResource("/jmeter/JMeterHome/bin/jmeter.properties").getFile();
JMeterUtils.loadJMeterProperties(jmeterProperties.getAbsolutePath());
File jmeterHome = new ClassPathResource("/jmeter/JMeterHome").getFile();
JMeterUtils.setJMeterHome(jmeterHome.getAbsolutePath());
JMeterUtils.initLocale();

// Initialize JMeter SaveService
SaveService.loadProperties();

// Load existing .jmx Test Plan
File jmx = new ClassPathResource("/jmeter/some-test.jmx").getFile();
HashTree testPlanTree = SaveService.loadTree(jmx);

// Run JMeter Test
jmeter.configure(testPlanTree);
jmeter.run();

Однако я получаю ClassNotFoundException, и это потому, что ни один из файлов jar в папке lib не загружается

cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message       : com.tag.jmeter.ext.config.PropertyReader
class               : org.apache.jorphan.collections.ListedHashTree
required-type       : org.apache.jorphan.collections.ListedHashTree
converter-type      : org.apache.jmeter.save.converters.HashTreeConverter
path                : /jmeterTestPlan/hashTree/hashTree/com.tag.jmeter.ext.config.PropertyReader

Дело в том, что многие из этих jar-файлов отсутствуют даже в репозитории Maven, и их так много. Как лучше всего включить их в classpath или я что-то здесь упустил?

Временно я добавил следующую зависимость, и она заработала, но это неправильное решение:

<dependency>
    <groupId>all</groupId>
    <artifactId>all</artifactId>
    <version>1.1</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/jmeter/JMeterHome/lib/tag-jmeter-extn-1.1.jar</systemPath>
</dependency>

Обратите внимание, что я пишу серию классов util для запуска файлов jmx, и это будет совместный проект util, который можно использовать в других проектах в качестве зависимости для запуска своих файлов jmx.

Это мои пом зависимости:

<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_java</artifactId>
    <version>2.13</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-math3</artifactId>
            <groupId>commons-math3</groupId>
        </exclusion>
        <exclusion>
            <artifactId>commons-pool2</artifactId>
            <groupId>commons-pool2</groupId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_http</artifactId>
    <version>2.13</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-math3</artifactId>
            <groupId>commons-math3</groupId>
        </exclusion>
        <exclusion>
            <artifactId>commons-pool2</artifactId>
            <groupId>commons-pool2</groupId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_components</artifactId>
    <version>2.13</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-math3</artifactId>
            <groupId>commons-math3</groupId>
        </exclusion>
        <exclusion>
            <artifactId>commons-pool2</artifactId>
            <groupId>commons-pool2</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_config</artifactId>
    <version>2.13</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-math3</artifactId>
            <groupId>commons-math3</groupId>
        </exclusion>
        <exclusion>
            <artifactId>commons-pool2</artifactId>
            <groupId>commons-pool2</groupId>
        </exclusion>
    </exclusions>
</dependency>

Как вы можете видеть, мы используем JMeter v 2.13, и я не могу выполнить обновление, потому что существуют сотни jmx, написанных с этой версией, и обновление в настоящее время недоступно.

1 Ответ

0 голосов
/ 03 июля 2018

Вы получаете сообщение об ошибке Конфигурация соединения JDBC * Реализация класса 1002 *, чтобы использовать его, необходимо добавить зависимость ApacheJMeter_jdbc, например:

<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_jdbc</artifactId>
    <version>2.13</version>
</dependency>

Согласно JMeter Best Practices вы всегда должны использовать последнюю доступную версию JMeter, которая на данный момент JMeter 4.0 , поэтому рассмотрите возможность переключения <version> компонентов "JMeter" на 4.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...