java - 从 junit 测试启动 jmeter

标签 java selenium junit jmeter load-testing

有没有办法将记录的jmeter脚本(它测试由多个用户执行的记录的一系列操作所施加的负载)集成到selenium/junit测试用例中)。这样我只需使用 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有关执行 JMeter 测试的可能性的更多信息,也许您会找到更简单的集成解决方案,因为可以通过 Maven plugin 执行 JMeter 测试。或Ant Task以及 Selenium 测试。

关于java - 从 junit 测试启动 jmeter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43442577/

相关文章:

java - 我们可以使用java.util.Date进行sql或oracle操作吗?

javascript - 使用Scrapy和Selenium抓取需要登录的页面,使用javascript加载数据

通过 Selenium 运行测试用例时出现 java.lang.NullPointerException

java - Spring 参数化/理论 JUnit 测试

java - 变量初始化时出现 ExceptionInInitializerError

java - 自动生成改造类型

java - JMenuBar 可见性困惑

java - 从现有 REST api 生成 Swagger 文档

python - 当源代码没有改变,但是 selenium webdriver 没有返回元素

java - 我们从哪里开始使用单元测试?