首页 > 解决方案 > Jmeter随机函数在java应用程序中不起作用

问题描述

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

下面是maven依赖

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

如果我将 jar 添加到类路径,它可以正常工作ApacheJMeter_functions,但如果我使用 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>

将 ApacheJMeter_functions jar 添加到没有版本名称的类路径时的响应

将 ApacheJMeter_functions 依赖 jar 添加到 pom 时的响应

标签: jmeter-5.0

解决方案


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

在 Java 代码中使用 Jmeter 函数时,Jmeter 会尝试将 java 类路径中的函数相关类与“search_path”中的 类(从 jar 中读取类)进行比较。所以 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 );

推荐阅读