【问题标题】:How to run Jmeter thread group in Junit test如何在Junit测试中运行Jmeter线程组
【发布时间】:2018-08-21 19:13:51
【问题描述】:

大家好,我有一个关于在 Junit 中运行 Jmeter 作为步骤的问题, 是否有可能在 Junit 中调用 JMX 文件并在 Jmeter 中运行它?一切都将在 Eclipse 中完成?

例如: 步骤 1 验证数据库中的数据 步骤 2 获取属性 第 3 步通过 Jmeter 触发数据 step 4 在 Junit 中验证数据

【问题讨论】:

    标签: java eclipse jmeter


    【解决方案1】:

    应该可以使用JMeter API

    1. 确保您的 JUnit 项目类路径中包含 JMeter 安装的“lib”和“lib/ext”文件夹中的所有 .jar
    2. 使用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

    【讨论】:

      【解决方案2】:

      您正在尝试在 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 的类。

      拥有多个工具来执行不同类型的测试也很好

      【讨论】:

        猜你喜欢
        • 2012-06-21
        • 1970-01-01
        • 2018-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多