从 junit 测试启动 jmeter
Launch jmeter from junit test
有没有什么方法可以在 selenium/junit 测试用例中集成一个记录的 jmeter 脚本(它测试由多个用户执行的一系列记录的操作所施加的负载)。这样我就用 java 执行那个 selenium/junit 测试用例,它给了我 junit 报告的性能结果?
我找到了关于如何将 selenium webdriver 集成到 jmeter 中的帖子,但反过来却没有。
您可以使用 JMeter Java API 执行现有的 JMeter 测试,示例代码如下所示:
import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.reporters.Summariser;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;
import java.io.File;
public class JMeterFromCode {
public static void main(String[] args) throws Exception {
// JMeter Engine
StandardJMeterEngine jmeter = new StandardJMeterEngine();
// Initialize Properties, logging, locale, etc.
JMeterUtils.loadJMeterProperties("/tmp/jmeter/bin/jmeter.properties");
JMeterUtils.setJMeterHome("/tmp/jmeter");
JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level
JMeterUtils.initLocale();
// Initialize JMeter SaveService
SaveService.loadProperties();
// Load Test Plan
HashTree testPlanTree = SaveService.loadTree(new File("/tmp/jmeter/bin/test.jmx"));
Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
if (summariserName.length() > 0) {
summer = new Summariser(summariserName);
}
// Store execution results into a .jtl file
String logFile = "/tmp/jmeter/bin/test.jtl";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(testPlanTree.getArray()[0], logger);
// Run JMeter Test
jmeter.configure(testPlanTree);
jmeter.run();
}
}
替换:
- 所有出现的
/tmp/jmeter
- 带有 JMeter 安装路径
/tmp/jmeter/bin/test.jmx
- .jmx 文件的路径,包含记录的 JMeter 脚本
/tmp/jmeter/bin/test.jtl
- .jtl 结果文件的所需位置
参见 Five Ways To Launch a JMeter Test without Using the JMeter GUI article for more information on the possibilities of executing a JMeter test, maybe you will find an easier integration solution as JMeter tests can be executed via Maven plugin or Ant Task 以及 Selenium 测试。
有没有什么方法可以在 selenium/junit 测试用例中集成一个记录的 jmeter 脚本(它测试由多个用户执行的一系列记录的操作所施加的负载)。这样我就用 java 执行那个 selenium/junit 测试用例,它给了我 junit 报告的性能结果? 我找到了关于如何将 selenium webdriver 集成到 jmeter 中的帖子,但反过来却没有。
您可以使用 JMeter Java API 执行现有的 JMeter 测试,示例代码如下所示:
import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.reporters.Summariser;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;
import java.io.File;
public class JMeterFromCode {
public static void main(String[] args) throws Exception {
// JMeter Engine
StandardJMeterEngine jmeter = new StandardJMeterEngine();
// Initialize Properties, logging, locale, etc.
JMeterUtils.loadJMeterProperties("/tmp/jmeter/bin/jmeter.properties");
JMeterUtils.setJMeterHome("/tmp/jmeter");
JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level
JMeterUtils.initLocale();
// Initialize JMeter SaveService
SaveService.loadProperties();
// Load Test Plan
HashTree testPlanTree = SaveService.loadTree(new File("/tmp/jmeter/bin/test.jmx"));
Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
if (summariserName.length() > 0) {
summer = new Summariser(summariserName);
}
// Store execution results into a .jtl file
String logFile = "/tmp/jmeter/bin/test.jtl";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(testPlanTree.getArray()[0], logger);
// Run JMeter Test
jmeter.configure(testPlanTree);
jmeter.run();
}
}
替换:
- 所有出现的
/tmp/jmeter
- 带有 JMeter 安装路径 /tmp/jmeter/bin/test.jmx
- .jmx 文件的路径,包含记录的 JMeter 脚本/tmp/jmeter/bin/test.jtl
- .jtl 结果文件的所需位置
参见 Five Ways To Launch a JMeter Test without Using the JMeter GUI article for more information on the possibilities of executing a JMeter test, maybe you will find an easier integration solution as JMeter tests can be executed via Maven plugin or Ant Task 以及 Selenium 测试。