如果我理解正确,则希望从Java程序中以编程方式运行整个测试计划。就个人而言,我发现创建测试计划.JMX文件并以JMeter非GUI模式运行它更容易:)
这是一个基于原始问题中使用的控制器和采样器的简单Java示例。
import org.apache.jmeter.control.LoopController;import org.apache.jmeter.engine.StandardJMeterEngine;import org.apache.jmeter.protocol.http.sampler.HTTPSampler;import org.apache.jmeter.testelement.TestElement;import org.apache.jmeter.testelement.TestPlan;import org.apache.jmeter.threads.SetupThreadGroup;import org.apache.jmeter.util.JMeterUtils;import org.apache.jorphan.collections.HashTree;public class JMeterTestFromCode { public static void main(String[] args){ // Engine StandardJMeterEngine jm = new StandardJMeterEngine(); // jmeter.properties JMeterUtils.loadJMeterProperties("c:/tmp/jmeter.properties"); HashTree hashTree = new HashTree(); // HTTP Sampler HTTPSampler httpSampler = new HTTPSampler(); httpSampler.setDomain("www.google.com"); httpSampler.setPort(80); httpSampler.setPath("/"); httpSampler.setMethod("GET"); // Loop Controller TestElement loopCtrl = new LoopController(); ((LoopController)loopCtrl).setLoops(1); ((LoopController)loopCtrl).addTestElement(httpSampler); ((LoopController)loopCtrl).setFirst(true); // Thread Group SetupThreadGroup threadGroup = new SetupThreadGroup(); threadGroup.setNumThreads(1); threadGroup.setRampUp(1); threadGroup.setSamplerController((LoopController)loopCtrl); // Test plan TestPlan testPlan = new TestPlan("MY TEST PLAN"); hashTree.add("testPlan", testPlan); hashTree.add("loopCtrl", loopCtrl); hashTree.add("threadGroup", threadGroup); hashTree.add("httpSampler", httpSampler); jm.configure(hashTree); jm.run(); }}依存关系
这些是基于JMeter 2.9和所使用的HTTPSampler所需的最低限度的JAR。其他采样器很可能具有不同的库JAR依赖关系。
- ApacheJMeter_core.jar
- jorphan.jar
- avalon-framework-4.1.4.jar
- ApacheJMeter_http.jar
- commons-logging-1.1.1.jar
- logkit-2.0.jar
- oro-2.0.8.jar
- commons-io-2.2.jar
- commons-lang3-3.1.jar
注意
- 在首先从JMeter安装目录/ bin目录中复制jmeter.properties的路径后,我还在Windows的c: tmp中将其硬连接到jmeter.properties。
- 我不确定如何为HTTPSampler设置转发代理。



