2017-04-24 98 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