如何通过maven项目生成jmeter dashboard报告

how to generate jmeter dashboard report through maven project

我可以使用此命令手动生成 Jmeter 仪表板报告 jmeter -g /path/to/jtl/file -o /where/you/want/to/store/dashboard 但我想通过maven项目生成它。

有什么办法吗?

下面是插件ex:

<goals>
<goal>jmeter</goal>
</goals>
<configuration>
    <propertiesUser>
    <jmeter.save.saveservice.output_format>csv</jmeter.save.saveservice.output_format>
    <jmeter.save.saveservice.bytes>true</jmeter.save.saveservice.bytes>
    <jmeter.save.saveservice.label>true</jmeter.save.saveservice.label>
    <jmeter.save.saveservice.latency>true</jmeter.save.saveservice.latency>
    <jmeter.save.saveservice.response_code>true</jmeter.save.saveservice.response_code>
    <jmeter.save.saveservice.response_message>true</jmeter.save.saveservice.response_message>
    <jmeter.save.saveservice.successful>true</jmeter.save.saveservice.successful>
    <jmeter.save.saveservice.thread_counts>true</jmeter.save.saveservice.thread_counts>
    <jmeter.save.saveservice.thread_name>true</jmeter.save.saveservice.thread_name>
    <jmeter.save.saveservice.time>true</jmeter.save.saveservice.time></propertiesUser>
<propertiesSaveService>
    <output_format>csv</output_format>
</propertiesSaveService>

首先,您需要配置 JMeter Maven 插件,以适合 HTML 报告仪表板生成的格式存储测试结果,即将接下来的几行添加到您的 pom.xml 文件:

<jmeter.save.saveservice.output_format>csv</jmeter.save.saveservice.output_format>
<jmeter.save.saveservice.bytes>true</jmeter.save.saveservice.bytes>
<jmeter.save.saveservice.label>true</jmeter.save.saveservice.label>
<jmeter.save.saveservice.latency>true</jmeter.save.saveservice.latency>
<jmeter.save.saveservice.response_code>true</jmeter.save.saveservice.response_code>
<jmeter.save.saveservice.response_message>true</jmeter.save.saveservice.response_message>
<jmeter.save.saveservice.successful>true</jmeter.save.saveservice.successful>
<jmeter.save.saveservice.thread_counts>true</jmeter.save.saveservice.thread_counts>
<jmeter.save.saveservice.thread_name>true</jmeter.save.saveservice.thread_name>
<jmeter.save.saveservice.time>true</jmeter.save.saveservice.time>

我认为最直接的方法是使用 Exec Maven Plugin,例如:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
        <execution>
            <phase>verify</phase>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <executable>java</executable>
        <arguments>
            <argument>-jar</argument>
            <argument>${basedir}/target/jmeter/bin/ApacheJMeter-3.0.jar</argument>
            <argument>-g</argument>
            <argument>${basedir}/target/jmeter/results/${maven.build.timestamp}-example.jtl</argument>
            <argument>-o</argument>
            <argument>${basedir}/target/dashboard</argument>
        </arguments>
    </configuration>
</plugin>

您可能需要将 reportgenerator.properties 文件和 report-template 文件夹复制到 Maven 项目的 "target/jmeter/bin" 目录(它将无法在 "clean" 阶段存活)或复制属性如 Adding Additional Properties To 章所述。

有关执行 JMeter 测试的不同选项的更多信息,请参阅 Five Ways To Launch a JMeter Test without Using the JMeter GUI 文章

这就是我使用 maven ant 插件通过 maven 创建 HTML 报告的方式。

我的 report-templatereportgenerator.propertiessrc/testresources 下。

    <plugins>
        <plugin>
            <groupId>com.lazerycode.jmeter</groupId>
            <artifactId>jmeter-maven-plugin</artifactId>
            <version>2.0.3</version>
            <configuration>
                <testResultsTimestamp>false</testResultsTimestamp>
                <propertiesUser>
                    <jmeter.save.saveservice.output_format>csv</jmeter.save.saveservice.output_format>
                    <jmeter.save.saveservice.bytes>true</jmeter.save.saveservice.bytes>
                    <jmeter.save.saveservice.label>true</jmeter.save.saveservice.label>
                    <jmeter.save.saveservice.latency>true</jmeter.save.saveservice.latency>
                    <jmeter.save.saveservice.response_code>true</jmeter.save.saveservice.response_code>
                    <jmeter.save.saveservice.response_message>true</jmeter.save.saveservice.response_message>
                    <jmeter.save.saveservice.successful>true</jmeter.save.saveservice.successful>
                    <jmeter.save.saveservice.thread_counts>true</jmeter.save.saveservice.thread_counts>
                    <jmeter.save.saveservice.thread_name>true</jmeter.save.saveservice.thread_name>
                    <jmeter.save.saveservice.time>true</jmeter.save.saveservice.time>
                </propertiesUser>
            </configuration>
            <executions>
                <execution>
                    <id>jmeter-tests</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>jmeter</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <phase>verify</phase>
                    <configuration>
                        <tasks>
                            <mkdir dir="${basedir}/target/jmeter/results/dashboard" />
                            <copy file="${basedir}/src/test/resources/reportgenerator.properties" 
                                  tofile="${basedir}/target/jmeter/bin/reportgenerator.properties" />
                            <copy todir="${basedir}/target/jmeter/bin/report-template">
                                <fileset dir="${basedir}/src/test/resources/report-template" />
                            </copy>
                            <java jar="${basedir}/target/jmeter/bin/ApacheJMeter-3.0.jar" fork="true">
                                <arg value="-g" />
                                <arg value="${basedir}/target/jmeter/results/*.jtl" />
                                <arg value="-o" />
                                <arg value="${basedir}/target/jmeter/results/dashboard/" />
                            </java>
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>