一、软件的安装
1、JDK:JMeter和ANT的运行都依赖于java的环境
1)系统变量→新建 JAVA_HOME 变量 。
变量值填写jdk的安装目录(本人是 D:\Java\jdk1.7.0_79);
2)系统变量→寻找 Path 变量→编辑
在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)
3)系统变量→新建 CLASSPATH 变量
变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (注意最前面有一点)
4)检查,在控制台输入:java -version 会显示出java的版本号
2、JMeter的安装
1)新建系统变量在变量名中输入:JMETER_HOME,
变量值中输入:D:\apache-jmeter-2.13,点击确定即可。
2)在环境变量CLASSPATH中添加
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;
%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit- 1.2.jar;
3)在环境变量Path中添加%JMETER_HOME%\bin
4)cmd 输入 jmeter -v :没报错就行
3、Ant的安装
1)新建以下环境变量:ANT_HOME:D:\apache-ant-1.9.7,此为你的ANT安装路径;
2)在环境变量PATH的最后面添加一下内容:
;%ANT_HOME%\bin 注意前面的分号,如果PATH中最后没有分号";"的话要加上,有的话就可去除。
3)进入cmd命令窗口,在CMD窗口中输入ant -version 没报错就可以了
二、使用ant构建运行Jmeter,并且生成jtl、Html报告;
1、jmeter默认保存的是.csv格式的文件,所以我们先要设置一下bin/jmeter.properties文件内容,修改jmeter.properties文 件 jmeter.save.saveservice.output_format=xml;
2、将apache-jmeter-2.13\extras\ant-jmeter-1.1.1.jar拷贝到apache-ant-1.9.7\lib目录下;
3、在\apache-jmeter-2.13\extras目录下打开CMD,运行"ant.bat -file build.xml -Dtest=Test" . 查看此目录下是否出现 Test.jtl、Test.html文件,若有,则构建成功。注意:Test.jmx是默认存在的Sample脚本文件。
我运行是出的问题:提示jtl文件不存在(***.Jtl does not exist)当时百度了好几篇文章都不知道是什么原因还是没能弄 好,后来换个思路查,查这个文件是什么jmeter中,原理是在控制台上运行jmeter脚本时产生的数据结果文件,这才没明 白过来。
接着我就再运行:ant.bat -file build.xml -Dtest=Test ,看看有没有这个文件产生,果然没有,这下来找原因了,我就查 build.xml是怎么用的,下面我就解释下build.xml,不知是否对,修改之后应该没什么大得问题了
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- jmeter中extras路径 -->
<property name="basedirectory" value="D:\apache-jmeter-4.0\extras" />
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="D:\apache-jmeter-4.0" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-4.0\report" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="D:\apache-jmeter-4.0\report" />
<!-- Name of test (without .jmx) -->
<property name="test" value="Test"/>
<!-- 生成的报告的前缀-->
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${test}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${test}.html" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<!-- 运行了两个标签中的内容-->
<target name="run">
<!--测试脚本标签对应下面的jMeter脚本-->
<antcall target="test" />
<!--测试脚本标签对应下面的jMeter脚本后产生测试报告的-->
<antcall target="report" />
</target>
<!--JMeter脚本执行,name属性值和上面name中标签下的<antcall target="test" /> target值对应-->
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
<!-- 此处看到别人的includes="*.jmx"我没试过,只用系统自带的一个脚本Test.jmx脚本,式了下可以用-->
<testplans dir="D:\apache-jmeter-4.0\extras" includes="Test.jmx" />
</jmeter>
</target>
<!--JMeter脚本执行,name属性值和上面name中标签下的<antcall target="report" /> target值对应-->
<target name="report">
<tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
<xslt classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
<!--这里根据自己目录下测试报告模板修改-->
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
<!-- jmeter报告模板-->
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
</project>
参考:https://blog.csdn.net/qq_40447533/article/details/80831485
参考:https://blog.csdn.net/kaluman/article/details/74535495