2017-04-24 2 views
-1

aufrufen Ich verwende einige Jmeter-Funktionen in meiner Jmx-Datei. Wenn ich es über die Befehlszeile mit dem Tool jmeter ausführen, läuft es normal, führt die Funktion aus und gibt einen Wert zurück.Jmeter-Funktionen werden nicht ausgeführt, wenn von Java-Code

Wenn ich den Java-Code ausführen, die die gleiche jmx-Datei laden, nimmt sie eine Funktion als String und gibt keinen Wert zurück.

Ich habe mit mehreren Funktionen getestet, Ergebnisse sind gleich. In jtl Datei sehe ich so etwas wie $ this- {__ Zeit (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"> 

Sein meines Java-Code, seine Arbeit normalerweise, wenn ich nicht über eine Funktion:

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

Könnten Sie bitte den Fehler erwähnen, den Sie bekommen haben? – Teocci

+0

Ich habe genau das gleiche Problem. Gab es eine Lösung dafür? –

+0

Ja @DanielIsrael instaed des laufenden Befehl: CMD = "/ java/bin/java -jar /test/test.jar" wir Befehl ausführen: CMD = „/ java/bin/java -cp‚/ test/test.jar:/test/test_lib/* 'com.company.JmeterPlugin " test_lib enthält alle unsere Gläser enthalten ApacheJMeter_functions.jar – Serine

Antwort

0

Ihr Code sieht gut aus, nur doppelt überprüfen Sie ApacheJMeter_functions.jar in Ihrem Projekt classpath haben. Die Datei befindet sich im Ordner "lib/ext" Ihrer JMeter-Installation.

Sie möchten vielleicht auch ResultCollector hinzufügen wie Ihre Testausführungsergebnisse in .jtl Datei zu speichern:

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); 

prüfen Five Ways To Launch a JMeter Test without Using the JMeter GUI zu JMeter Testausführung auf unterschiedlichen Ansätzen mehr Informationen einschließlich der Verwendung von Java API off Kick und entwickeln Tests.

+0

Danke Dmitri für Ihre Antwort, ich habe eine Menge Dinge in dieser Zeit ausprobiert. Es funktioniert normal, wenn ich ApacheJMeter_functions.jar als externen jar in meinen Projektklassenpfad einschließe und die Anwendung als Java-Anwendung ausführe. Ich bekomme normale Ergebnisse in meinem jtl. Aber wenn ich es in .jar exportieren und es über die Befehlszeile aufrufen, hat es nicht verstanden, dass ApacheJMeter_functions.jar enthalten ist. – Serine

+0

Ich habe es zu Klassenpfad in Meta-Inf hinzugefügt, auch versucht 'JMeterUtils.setProperty (" search_paths "," JMeter_lib/ApacheJMeter_functions.jar ");' mit relativen und absoluten Pfade, aber es weiterhin meine Funktion überspringen Anruf. Auch ich habe versucht, die Codes von Link, die Sie bereitgestellt haben, aber es funktioniert auch nicht, wenn ich es als ein Glas ausführen. – Serine

Verwandte Themen