2017-04-24 96 views
-1

我在我的jmx文件中使用了一些jmeter函數。 當我用jmeter工具從命令行運行它時,它正常運行,執行該函數並返回一個值。從Java代碼調用時Jmeter函數不會執行

當我運行java代碼時,它加載了相同的jmx文件,它以函數作爲字符串並且不返回值。

我已經測試了幾個函數,結果是一樣的。 在JTL文件我看到像這個 - $ {__時間(YYYY-MM-DD HH:MM:SS)}

<httpSample t="663" it="0" lt="631" ts="1492989803759" s="true" lb="User-getapikey ${__time(yyyy-MM-dd HH:mm:ss)} " rc="200" rm="" tn="Thread Group 1-1" dt="text" de="UTF-8" by="528" ng="1" na="1"> 

它我的Java代碼,它正常工作時,我沒有的功能:

StandardJMeterEngine jmeter = new StandardJMeterEngine(); 
JMeterUtils.loadJMeterProperties(jmeterPropertiesPath); 
JMeterUtils.setJMeterHome(jmeterHomePath); 
JMeterUtils.initLogging(); 
JMeterUtils.initLocale(); 

SaveService.loadProperties(); 
HashTree testPlanTree = null; 
       try{ 
        log.info("loading testPlanTree"); 
        testPlanTree = SaveService.loadTree(jmxFile); 
        JMeter.convertSubTree(testPlanTree); 
       }catch(IOException ex){ 
        log.info("error loading file as tree"); 
        log.info(ex.getMessage()); 
        return; 
       } 
       jmeter.configure(testPlanTree); 
       jmeter.run(); 
+0

你能否提一下你得到的錯誤? – Teocci

+0

我也有這個完全相同的問題。有沒有解決這個問題? –

+0

是@DanielIsrael運行命令: CMD =「/ java/bin/java -jar /test/test.jar」 我們運行命令: CMD =「/ java/bin/java -cp'/ test/test.jar:/ test/test_lib/*'com.company.JmeterPlugin「 test_lib包含我們所有的jar包含ApacheJMeter_functions.jar – Serine

回答

0

你的代碼看起來不錯,只是仔細檢查你在你的項目的classpathApacheJMeter_functions.jar。該文件位於JMeter安裝的「lib/ext」文件夾下。

您可能還需要添加ResultCollector到測試執行結果存儲到像.jtl文件:

Summariser summer = null; 
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary"); 
if (summariserName.length() > 0) { 
    summer = new Summariser(summariserName); 
} 

ResultCollector logger = new ResultCollector(summer); 
logger.setFilename("result.jtl"); 
testPlanTree.add(testPlanTree.getArray()[0], logger); 

退房Five Ways To Launch a JMeter Test without Using the JMeter GUI在不同的方法來JMeter測試執行,包括使用Java API來揭開序幕更多信息並開發測試。

+0

感謝Dmitri爲您的答案,我在這段時間嘗試了很多東西。當我將ApacheJMeter_functions.jar作爲外部jar包含到我的項目類路徑中並將應用程序作爲Java應用程序運行時,它的工作正常。我在我的jtl中得到了正常的結果。 但是,當我將它導出到.jar並從命令行調用它時,它不明白ApacheJMeter_functions.jar包含在內。 – Serine

+0

我已經將它添加到meta-inf中的類路徑中,也嘗試將 'JMeterUtils.setProperty(「search_paths」,「JMeter_lib/ApacheJMeter_functions.jar」);' 用相對路徑和絕對路徑,但它繼續跳過我的函數呼叫。 另外我已經嘗試過你提供的鏈接代碼,但是當我將它作爲jar運行時,它也不工作。 – Serine