【问题标题】:How parse a jmeter jmx element to a object如何将 jmeter jmx 元素解析为对象
【发布时间】:2021-12-04 18:19:53
【问题描述】:

我想将此字符串解析为 Jmeter ResultCollector 对象:

          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>false</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>false</responseData>
                <samplerData>false</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>false</responseHeaders>
                <requestHeaders>false</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <sentBytes>true</sentBytes>
                <url>true</url>
                <threadCounts>true</threadCounts>
                <idleTime>true</idleTime>
                <connectTime>true</connectTime>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>

我不想新建一个ResultCollector,并设置很多字段,因为这需要太多时间。 是否有任何简单的方法来传递元素字符串,并获取相应的java对象。

【问题讨论】:

    标签: java jmeter jmeter-plugins


    【解决方案1】:

    最简单的方法是请互联网上的人为您完成工作。

    看看SaveService.loadTree()函数,它将JMeter的.jmx测试计划读入HashTree

    一旦你加载它,你应该能够从 HashTree 中找到你的 ResultsCollector 实例

    示例代码:

    package com.example;
    
    import org.apache.jmeter.reporters.ResultCollector;
    import org.apache.jmeter.save.SaveService;
    import org.apache.jmeter.util.JMeterUtils;
    import org.apache.jorphan.collections.HashTree;
    import org.apache.jorphan.collections.SearchByClass;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.ObjectOutputStream;
    import java.util.Collection;
    
    public class JMeterTest {
    
        public static void main(String[] args) throws Exception {
    
            JMeterUtils.loadJMeterProperties("c:/apps/jmeter/bin/jmeter.properties");
            JMeterUtils.setJMeterHome("c:/apps/jmeter");
    
            HashTree testplan = SaveService.loadTree(new File("c:/apps/jmeter/bin/test.jmx"));
            SaveService.loadProperties();
    
            SearchByClass<ResultCollector> listenerSearch = new SearchByClass<>(ResultCollector.class);
            testplan.traverse(listenerSearch);
            Collection<ResultCollector> listeners = listenerSearch.getSearchResults();
            ResultCollector resultCollector = listeners.stream().findFirst().get();
    
            FileOutputStream resultCollectorOut = new FileOutputStream("resultcollector.dump");
            ObjectOutputStream objectOut = new ObjectOutputStream(resultCollectorOut);
            objectOut.writeObject(resultCollector);
            objectOut.flush();
            objectOut.close();
            
        }
    }
    

    执行代码后,您将在项目所在的文件夹中创建resultcollector.dump 文件。

    因此,可以像这样简单地创建结果收集器的实例:

    FileInputStream resultCollectorIn = new FileInputStream(new File("resultcollector.dump"));
    ObjectInputStream objectIn = new ObjectInputStream(resultCollectorIn);
    
    ResultCollector resultCollector = (ResultCollector)objectIn.readObject();
    objectIn.close();
    

    更多信息:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 2017-07-14
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多