【发布时间】:2018-08-21 19:13:51
【问题描述】:
大家好,我有一个关于在 Junit 中运行 Jmeter 作为步骤的问题, 是否有可能在 Junit 中调用 JMX 文件并在 Jmeter 中运行它?一切都将在 Eclipse 中完成?
例如: 步骤 1 验证数据库中的数据 步骤 2 获取属性 第 3 步通过 Jmeter 触发数据 step 4 在 Junit 中验证数据
【问题讨论】:
大家好,我有一个关于在 Junit 中运行 Jmeter 作为步骤的问题, 是否有可能在 Junit 中调用 JMX 文件并在 Jmeter 中运行它?一切都将在 Eclipse 中完成?
例如: 步骤 1 验证数据库中的数据 步骤 2 获取属性 第 3 步通过 Jmeter 触发数据 step 4 在 Junit 中验证数据
【问题讨论】:
应该可以使用JMeter API。
使用StandardJMeterEngine 类运行您的测试,例如:
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 org.junit.Test;
import java.io.File;
public class YourJUnitTestClass {
@Test
public void runJMeter() throws Throwable {
StandardJMeterEngine jmeter = new StandardJMeterEngine();
JMeterUtils.loadJMeterProperties("/path/to/your/jmeter/bin/jmeter.properties");
JMeterUtils.setJMeterHome("/path/to/your/jmeter");
JMeterUtils.initLocale();
SaveService.loadProperties();
HashTree testPlanTree = SaveService.loadTree(new File("/path/to/your/jmeter/Test.jmx"));
Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
if (summariserName.length() > 0) {
summer = new Summariser(summariserName);
}
String logFile = "/path/to/result.jtl";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(testPlanTree.getArray()[0], logger);
jmeter.configure(testPlanTree);
jmeter.run();
}
}
更多信息:Five Ways To Launch a JMeter Test without Using the JMeter GUI
【讨论】:
您正在尝试在 JUnit 测试中执行 JMeter,这是一种错误的方法,
因为JMeter主要是一个性能工具
Apache JMeter 可用于测试静态和动态资源、Web 动态应用程序的性能。 它可用于模拟服务器、服务器组、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。
还有junit is not suitable for performance test
JUnit 专为单元测试而设计。在 Java 中编写性能测试时需要注意很多事情
如果你想使用 JMeter 进行单元测试,你可以做什么是通过JUnit Sampler在内部/使用 JMeter 添加单元测试
类名 要测试的类的名称。采样器将扫描 jmeter/lib/ext 和 jmeter/lib/junit 中的 jar 文件以查找扩展 JUnit 的 TestCase 的类。
拥有多个工具来执行不同类型的测试也很好
【讨论】: