2017-04-16 111 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秒的持續時間」);}' –