Jmeter随机函数无法从Java应用程序运行

时间:2018-07-27 06:37:22

标签: jmeter-5.0

我想在我的Java应用程序中使用Jmeter随机函数(${__RandomString(10,0123456789,Value)})进行负载测试。

下面是Maven依赖项

<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_functions</artifactId>
    <version>4.0</version>
</dependency>

如果我将ApacheJMeter_functions jar添加到类路径中,则它可以正常工作,但是如果我使用Maven依赖项,则不能正常工作。

注意:如果我将jar添加到没有版本名称的类路径中,效果很好。

pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>performance-api</artifactId>
    <version>0.1</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_core</artifactId>
            <version>4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_http</artifactId>
            <version>4.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_functions</artifactId>
            <version>4.0</version>
            </dependency>
    </dependencies>
    <build>
        <plugins>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
</project>

Response when added ApacheJMeter_functions jar to class path without version name

Response when added ApacheJMeter_functions dependency jar into pom

1 个答案:

答案 0 :(得分:1)

以下解决方案帮助我解决了问题

在Java代码中使用Jmeter函数时,Jmeter尝试将Java类路径中与函数相关的类与'search_path'中的类进行比较(从罐子中读取类)< / em>。因此,只有在两个路径(Jmeter的每个函数都有单独的类)中都存在必需的函数类时,Jmeter函数才起作用。

这就是为什么我们需要确保将pom 中添加的'ApacheJMeter_functions'jar(将在类路径中添加),并将jmeter函数jar的路径设置为 search_path'。两者应具有相同的版本。

但是对于Spring Boot应用程序,除了向pom添加依赖项之外,我们还需要将jmeter函数jar的路径显式附加到如下所示的类路径

System.setProperty("java.class.path", System.getProperty("java.class.path") + PathToJmeterFunctionJars );