Java运行JMX禁用动作



im使用Java运行已禁用采样器的JMX文件。因此,我认为它不会运行残疾采样器,但可以运行。这是JMX文件代码:您可以看到enabled="false"

<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit User All Parameters" enabled="false">

和IM使用org.apache.jmeter.save.SaveService;类加载文件内容:

 File jmxFile = new File(jmxFilePath);
      HashTree testPlanTree = null;
      try{
       testPlanTree = SaveService. loadTree(jmxFile);
      }catch(IOException ex){}

任何想法我该如何解决此问题?

我的期望是您的代码缺少jmeter.convertsubtree()方法,根据javadoc

convertsubtree

public static void convertsubtree(hashtree树)

删除禁用元素用目标子树替换替换替代元素

因此,请确保在进行测试之前调用它

示例代码(以防万一您仍然需要),请注意JMeter.convertSubTree(testPlanTree);

   //JMeter Home
   String jmeterHome = "c:/apps/jmeter";
   // JMeter Engine
   StandardJMeterEngine jmeter = new StandardJMeterEngine();
   // Initialize Properties, logging, locale, etc.
   JMeterUtils.loadJMeterProperties(jmeterHome + "bin/jmeter.properties");
   JMeterUtils.setJMeterHome(jmeterHome);
   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 existing .jmx Test Plan
   HashTree testPlanTree = SaveService.loadTree(new File(jmeterHome + "bin/test.jmx"));
   // Remove disabled test elements
   JMeter.convertSubTree(testPlanTree);

   // Add summariser
   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 = jmeterHome + "/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();

请参阅五种启动Jmeter测试的方法,而无需使用Jmeter GUI文章以了解有关执行Jmeter测试的不同方法的更多信息。

最新更新