当前位置: 首页 > 知识库问答 >
问题:

无法在maven项目中使用Java代码运行jmeter测试文件

韩弘壮
2023-03-14
package com.solitera.automation.controller;

import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;

import java.io.File;
import java.io.FileInputStream;

public class JMeterFromExistingJMX {

    public static void main(String[] argv) throws Exception {
        // JMeter Engine
        StandardJMeterEngine jmeter = new StandardJMeterEngine();


        // Initialize Properties, logging, locale, etc.
        JMeterUtils.loadJMeterProperties("D:/apache-jmeter-5.1.1/bin/jmeter.properties");
        JMeterUtils.setJMeterHome("D:/apache-jmeter-5.1.1");
        JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level
        JMeterUtils.initLocale();

        // Initialize JMeter SaveService
        SaveService.loadProperties();

        // Load existing .jmx Test Plan
       /* FileInputStream in = new FileInputStream("D:/Ecllipse_project_workspace2/slt_automation/src/test/jmeter/slt_autoMa_Test.jmx");
        HashTree testPlanTree = SaveService.loadTree(in);
        in.close();*/

        HashTree testPlanTree = SaveService.loadTree(new File("D:/apache-jmeter-5.1.1/extras/slt_autoMa_Test.jmx"));

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


}

在eclipse中作为Java应用程序运行后->输出是:

pom.xml文件

<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_core -->
    <dependency>
        <groupId>org.apache.jmeter</groupId>
        <artifactId>ApacheJMeter_core</artifactId>
        <version>5.2.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
    <dependency>
        <groupId>com.thoughtworks.xstream</groupId>
        <artifactId>xstream</artifactId>
        <version>1.4.11.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.4</version>
    </dependency>
</dependencies>

<build>
<plugins>
    <plugin>
        <groupId>com.lazerycode.jmeter</groupId>
        <artifactId>jmeter-maven-plugin</artifactId>
        <version>2.9.0</version>
        <executions>
            <execution>
                <id>jmeter-tests</id>
                <goals>
                    <goal>jmeter</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <overrideRootLogLevel>debug</overrideRootLogLevel>
            <propertiesUser>
                <jmeter.save.saveservice.output_format>xml</jmeter.save.saveservice.output_format>
            </propertiesUser>
            <testResultsTimestamp>false</testResultsTimestamp>
            <ignoreResultFailures>true</ignoreResultFailures>
        </configuration>
    </plugin>

<!-- <plugin>
    <groupId>com.lazerycode.jmeter</groupId>
    <artifactId>jmeter-analysis-maven-plugin</artifactId>
    <version>1.0.4</version>
    <executions>
        <execution>
            <goals>
                <goal>analyze</goal>
            </goals>
            <phase>verify</phase>
        </execution>
    </executions>
    <configuration>
        source file that contains jmeter result data. Needs to be XML format 
            or a GZIPed XML format
        <source>D:\Ecllipse_project_workspace2\slt_automation\target\jmeter\results\*</source>

        directory where to store analysis report files. At least a file "summary.txt" 
            will be stored here.
        <targetDirectory>D:\Ecllipse_project_workspace2\slt_automation\target\jmeter\reports</targetDirectory>
        <logsDirectory>D:\Ecllipse_project_workspace2\slt_automation\target\jmeter\logs</logsDirectory>

        <processAllFilesFound>true</processAllFilesFound>
    </configuration>
</plugin> -->



<plugin>
    <groupId>com.lazerycode.jmeter</groupId>
    <artifactId>jmeter-analysis-maven-plugin</artifactId>
    <version>1.0.4</version>
    <executions>
        <execution>
            <goals>
                <goal>analyze</goal>
            </goals>
            <phase>verify</phase>
        </execution>
    </executions>
    <configuration>
        <!-- source file that contains jmeter result data. Needs to be XML format 
            or a GZIPed XML format -->
        <source>${project.build.directory}/jmeter/results/*</source>

        <!-- directory where to store analysis report files. At least a file "summary.txt" 
            will be stored here. -->
        <targetDirectory>${project.build.directory}/jmeter/reports</targetDirectory>
        <processAllFilesFound>true</processAllFilesFound>
    </configuration>
</plugin>


<plugin>
    <groupId>de.codecentric</groupId>
    <artifactId>jmeter-graph-maven-plugin</artifactId>
    <version>0.1.0</version>
    <configuration>
        <inputFile>${project.build.directory}/jmeter/results/slt_autoMa_Test.csv</inputFile>
        <graphs>
            <graph>
                <pluginType>ResponseTimesOverTime</pluginType>
                <width>800</width>
                <height>600</height>
                <outputFile>${project.build.directory}/jmeter/results/slt_autoMa_Test.png</outputFile>
            </graph>
        </graphs>
    </configuration>
</plugin>

    </plugins>
</build>

共有1个答案

佟翰林
2023-03-14

从您得到的错误看来,您的测试使用的是HTTP头管理器,而您没有提供此类的ApacheJMeter_HTTP包。

临时解决方案是将下一个Maven依赖项添加到pom.xml:

<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_http -->
<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_http</artifactId>
    <version>5.2.1</version>
</dependency>

我还建议从pom.xml中删除这些httpcorexstream依赖项,因为Maven会将它们作为JMeter核心和HTTP包的可传递依赖项获取。

根据您的测试性质,您可能需要其他包、JMeter插件,所以很难说您还需要什么。

 类似资料:
  • 我尝试在eclipse中运行下面的代码,发布在这里。 但它并没有被执行。它抛出以下错误: 注意:我还添加了来自lib/extjmetr安装文件的外部罐 代码:

  • 我有3个maven项目。项目1,项目2 为此,我在项目2 pom.xml文件中添加了这个 我的pom。Project3的xml是- 在项目3中,我添加了testng。xml文件来运行测试。现在如果我运行这个测试。xml文件,那么我所有的测试用例都成功运行了。如果我尝试使用maven测试运行测试用例,那么它会失败。 我已经在下面的pom文件中包含了testng.xml文件,以便使用maven运行te

  • 下面的代码从excel文件中打印内容(在eclipse中尝试过),但我无法使用Groovy在Jmeter3.1中运行它。 我抛出了一个错误: JSR223脚本中的问题JSR223采样器,消息:javax.script.脚本异常:org.codehaus.groovy.control.多重编译错误异常:启动失败 这是我的代码:

  • 我遇到了无法使用Maven运行JUnit5测试的问题。在IDE中运行它们工作正常,但使用“mvn测试”会产生以下输出: 这是我的测试课程: pom: 我做了一些研究,我认为这可能与混合JUnit4和JUnit5特性有关,这导致maven surefire插件无法运行测试。然而,我找不到那些剩余的JUnit4特性可能在哪里。我将感谢任何帮助。

  • 我创建了maven项目,它由junit和spock测试组成。两个测试的代码。 在我的本地机器中,当我运行mvn测试时,它会欺骗两个测试类。我在git仓库上部署了项目,并为maven项目配置了jenkins。我推这个项目的存储库和执行作业,但是詹金斯只检测JUnit测试的AppTest类。我已经改变了pom.xml并添加了文件regadring到。我的项目结构。 文件组织的内容。spockframe

  • 我试图按照本教程在IntelliJ中设置Maven JavaFX项目https://openjfx.io/openjfx-docs/#maven(带Maven的IntelliJ非模块化)但无论我做什么,它都失败了。 我一直在尝试很多互联网建议。我尝试在pom中设置VM变量,我确保JAVA\u HOME指向我的JDK 12目录,并检查项目结构中JDK的设置是否正确。 这是我的pom文件: 这是输出: