准备工作

假设你已经下载并安装好如下软件:

使用 idea 创建 maven 项目工程

创建maven项目

添加 jmeter 测试脚本

src/test文件夹内创建jmeter文件夹用于存放 jmeter 测试脚本。可以使用子文件夹,无需将 jmeter 这个文件夹的类型设置为 test。

添加测试脚本

修改 pom.xml 添加 jmeter 插件 (重点)

maven 集成 jmeter-maven-plugin 可以运行自动化测试。

<?xml version="1.0" encoding="UTF-8"?>
<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>

    <groupId>org.example</groupId>
    <artifactId>jxyx-app-testing</artifactId>
    <version>1.0.1</version>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <java.version>1.8</java.version>
        <!-- 指定jmeter版本 -->
        <jmeter.version>5.4.3</jmeter.version>
        <!-- 指定jmeter-plugin版本 -->
        <jmeter-plugin-version>3.5.0</jmeter-plugin-version>
        <!-- 指定使用的mysql jdbc driver的版本 -->
        <mysql-driver.version>8.0.29</mysql-driver.version>
    </properties>
    <profiles>
        <profile>
            <!-- 定义测试环境 -->
            <id>test</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <testing.host>test-cps.example.org</testing.host>
                <testing.db>test</testing.db>
            </properties>
        </profile>
        <profile>
            <!-- 定义预发环境 -->
            <id>pre</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <testing.host>pre-cps.example.org</testing.host>
                <testing.db>pre</testing.db>
            </properties>
        </profile>
    </profiles>
    <build>
        <!-- 配置使用变量的配置文件-->
<!--        <filters>-->
<!--            <filter>src/test/resources/testing-config.properties</filter>-->
<!--        </filters>-->
<!--        <resources>-->
<!--            &lt;!&ndash;配置文件路径&ndash;&gt;-->
<!--            <resource>-->
<!--                <directory>src/test/resources</directory>-->
<!--                <filtering>true</filtering>-->
<!--            </resource>-->
<!--        </resources>-->
        <plugins>
            <plugin>
                <!-- 命令行执行: mvn clean verify -->
                <!-- 文档及配置 https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/wiki/ -->
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>${jmeter-plugin-version}</version>

                <configuration>
                    <!-- 使用特定的 jmeter 版本 -->
                    <jmeterVersion>${jmeter.version}</jmeterVersion>
                    <generateReports>true</generateReports>
                    <propertiesUser>
                        <!-- 用户定义的变量,相当于 jmeter 的 -J选项传递的变量及值 -->
                        <!-- 定义线程数threads变量 -->
                        <threads>1</threads>
                        <!-- 定义接口主机host变量 -->
                        <host>${testing.host}</host>
                        <db>${testing.db}</db>
                    </propertiesUser>
                    <testPlanLibraries>
                        <!-- 依赖的额外的java jar 文件 -->
                        <artifact>mysql:mysql-connector-java:${mysql-driver.version}</artifact>
                    </testPlanLibraries>
                    <testFilesIncluded>
                        <!-- 指定运行的jmeter脚本 -->
                        <jMeterTestFile>**/*.jmx</jMeterTestFile>
                    </testFilesIncluded>
                </configuration>
                <executions>
                    <!-- Generate JMeter configuration -->
                    <execution>
                        <id>configuration</id>
                        <goals>
                            <goal>configure</goal>
                        </goals>
                    </execution>
                    <!-- Run JMeter tests -->
                    <execution>
                        <id>jmeter-tests</id>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                    </execution>
                    <!-- Fail build on errors in test -->
                    <execution>
                        <id>jmeter-check-results</id>
                        <goals>
                            <goal>results</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

首次配置

首次运行时,需要先进行 jmeter 配置。运行如下命令进行配置:

# 配置
mvn jmeter:configure

# 测试
mvn jmeter:jmeter

运行测试用例

使用默认的测试环境进行测试

# 清理并测试
mvn clean verify
# 指定使用 test profile
mvn clean verify -Ptest
# 仅仅测试
mvn verify
# 指定使用 test profile
mvn verify -Ptest

使用预发布环境进行测试

# 指定使用 pre profile
mvn clean verify -Ppre
# 指定使用 test profile
mvn verify -Ppre

结语

至此,jmeter 已经能够和 maven 正常结合起来。再集成进 Jenkins 或 gitlab 就可以进行自动化构建和测试了。