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测试的不同方法的更多信息。