代碼已上傳git(包括調試的jmx,jmeter相關文件等):https://gitlab.com/yinzhenzhi/jmeterandmaven
目的:現在很多人都在做自動化接口的平台,我也正在學,不過有更方便的方法避免了重復造輪子,試試也可以的。
工具解釋:jmeter是使用Java語言編寫的成熟的性能測試和接口測試工具,maven是java的構建工具,對於jar包的引入非常方便(也有用ant工具的,不過我沒用過),jenkins是持續集成工具,主要是做一些定時任務的執行。通過這三種工具的結合,可以通過jenkins工具來做定時的接口測試並發送測試報告,是一種比較方便而且省力的方法,不過和現在比較成熟的用代碼寫的報告相比也有一定的缺陷性。
工具版本:maven--3.5.0 ,jmeter-3.3.0 ,jenkins--最新版本(截至2018-10-24)
前提:已安裝jenkins和maven工具,已下載jmeter3.3的包並解壓(最新的已經是5.0,用這個版本也可以,只不過對應的maven-jmeter-plugin也需要更新到2.8.0版本,我沒試過)。
步驟:
1.eclipse創建maven項目
2.在項目中創建文件夾如下,其中的文件,除了jmx是你要執行的jmeter腳本,其他的都是jmeter的安裝文件里面的配置信息和圖片報告模板之類的:

3.編輯pom.xml,然后執行 run as--maven build(goal輸入verify)
<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>testMavenandJmeter</groupId>
<artifactId>zhizhi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>zhizhi</name>
<url>http://maven.apache.org</url>
<properties>
<jmeter.result.jtl.dir>${project.build.directory}\jmeter\results</jmeter.result.jtl.dir>
<jmeter.result.html.dir>${project.build.directory}\jmeter\html</jmeter.result.html.dir>
<jmeter.result.resource.dir>${project.build.directory}\jmeter\html1</jmeter.result.resource.dir>
<jmeter.result.html2.dir>${project.build.directory}\jmeter\html2</jmeter.result.html2.dir>
<ReportName>TestReport</ReportName>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
<!--此處functions、json、postgresql為自己引入的jar包 -->
<!--
<dependency>
<groupId>com.functions.jmeter</groupId>
<artifactId>functions</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.json.jmeter</groupId>
<artifactId>json</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.postgresql.jdbc</groupId>
<artifactId>postgresql</artifactId>
<version>1.0.2</version>
</dependency>
-->
</dependencies>
<build>
<finalName>AutoTest</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
<configuration>
<artifactId>mysql-connector-java</artifactId>
<outputDirectory>${project.build.directory}/jmeter/lib</outputDirectory>
</configuration>
</plugin>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<resultsFileFormat>xml</resultsFileFormat>
<ignoreResultFailures>true</ignoreResultFailures>
<testResultsTimestamp>false</testResultsTimestamp>
</configuration>
<executions>
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${jmeter.result.html.dir}</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>transform</goal>
</goals>
</execution>
</executions>
<configuration>
<transformationSets>
<transformationSet>
<dir>${jmeter.result.jtl.dir}</dir>
<stylesheet>src/main/resources/jmeter-results-detail-report_21.xsl</stylesheet>
<outputDir>${jmeter.result.html.dir}</outputDir>
<fileMappers>
<fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
<targetExtension>html</targetExtension>
</fileMapper>
</fileMappers>
</transformationSet>
</transformationSets>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
<version>8.7</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
以上代碼的全部已上傳在git,自己調不出來的直接拿來主義,把jmx換掉就可以了。請務必注意,我的jmeter-maven-plugin版本是2.4.1,這個版本可能不兼容jmeter4.0和5.0,如果是這兩個版本的jmeter的腳本,可能需要將jmeter-maven-plugin的版本更新為對應的2.7.0或2.8.0.
以上是maven+jmeter的結合使用,jenkins的調用等,下個筆記見。
