2017-04-16 113 views
0

有没有什么方法可以在一个硒/ junit测试用例中集成一个记录的jmeter脚本(它测试由多个用户执行的一系列记录的操作产生的负载)。这样我就可以用java执行那个selenium/junit测试用例,它给我提供了junit报告的性能结果? 我发现帖子说明如何将硒webdriver集成到Jmeter中,但不是其他方式。从junit测试启动jmeter

+0

从来没有听说过这样的事情,但通常可以使用JMeter API和JUnit Runner。不是一件小事。我会建议使用Jenkins插件:https://wiki.jenkins-ci.org/display/JENKINS/JMeter+Plugin –

+0

你能澄清你在问什么吗?你原来写的问题绝对没有意义。 jmeter和selenium是用于非常不同的事情的两种不同的工具,而junit只是一个测试框架。你究竟想要做什么? –

+0

@Corey Goldberg,OP问题(从junit运行jmeter测试)是有道理的,它太大而无法回答 –

回答

0

您可以执行现有的使用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测试的可能性的更多信息,也许你会发现更容易的集成解决方案为JMeter的测试可以通过Maven plugin或执行Ant Task以及硒测试。

+0

谢谢,这正是我想要的!有什么办法可以对报告的结果进行断言,使用相同的API?例如,如果总运行时间少于2秒,则测试应该通过。 – CodeMaker

+0

在JMeter测试计划中,您可以使用[Duration Assertion](http://jmeter.apache.org/usermanual/component_reference.html#Duration_Assertion),检查out [如何在三个简单的步骤中使用JMeter断言](https://www.blazemeter.com/blog/how-use-jmeter-assertions-3-easy-steps)以获取详细信息。如果将JMeter相关代码包装到JUnit或TestNG测试中,您可以执行如下操作:'long before = System.currentTimeMillis(); //之后的长度为Jmeter的代码= System.currentTimeMillis();如果((之前 - >之前)> 2000){Assert.fail(“超过2秒的持续时间”);}' –