Я следую методам, представленным в эта ветка, а затем сохраняю hashTree следующим образом:
FileOutputStream out = new FileOutputStream("test.jmx");
SaveService.saveTree(hashTree, out);
Но JMeter не может открыть файл:

Можно ли сохранить и восстановить созданный тест?
С другой стороны, есть проект на GitHub для создания и сохранения теста. Как бы то ни было, результатом является недопустимый файл JMX.
Я сравниваю созданный файл с простым тестовым скриптом JMeter. Эти атрибуты не добавляются:
guiclass = "TestPlanGui" testclass = "TestPlan"
Я добавляю их вручную, и все ошибки исправляются ?!
Классы Test и GUI должны быть заданы как свойства в элементе test. Вот часть AbstractJMeterGuiComponent:
mc.setProperty(new StringProperty(TestElement.GUI_CLASS, this.getClass().getName()));
mc.setProperty(new StringProperty(TestElement.TEST_CLASS, mc.getClass().getName()));
Итак, графический интерфейс и ядро связаны друг с другом, и в графическом интерфейсе есть несколько основных конфигураций.
Как создать достоверную информацию о графическом интерфейсе JMX?




Скорее всего, вы забыли установить следующие свойства:
Если вы их опустите, вы все равно сможете запустить тест, используя JMeterEngine, однако попытка открыть сгенерированный скрипт в графическом интерфейсе потерпит неудачу.
Вот пример плана тестирования, который содержит сэмплер Группа потоков и HTTP-запрос, вы можете использовать его в качестве справочного материала.
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.config.gui.ArgumentsPanel;
import org.apache.jmeter.control.LoopController;
import org.apache.jmeter.control.gui.LoopControlPanel;
import org.apache.jmeter.control.gui.TestPlanGui;
import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui;
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.TestPlan;
import org.apache.jmeter.threads.ThreadGroup;
import org.apache.jmeter.threads.gui.ThreadGroupGui;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;
import java.io.File;
import java.io.FileOutputStream;
public class JMeterFromJava {
public static void main(String[] args) throws Exception {
String jmeterHome = "/path/to/your/jmeter/installation";
JMeterUtils.setJMeterHome(jmeterHome);
JMeterUtils.loadJMeterProperties(jmeterHome + "/bin/jmeter.properties");
JMeterUtils.initLocale();
HashTree testPlanTree = new HashTree();
HTTPSamplerProxy examplecomSampler = new HTTPSamplerProxy();
examplecomSampler.setDomain("example.com");
examplecomSampler.setPort(80);
examplecomSampler.setPath("/");
examplecomSampler.setMethod("GET");
examplecomSampler.setName("Open example.com");
examplecomSampler.setProperty(TestElement.TEST_CLASS, HTTPSamplerProxy.class.getName());
examplecomSampler.setProperty(TestElement.GUI_CLASS, HttpTestSampleGui.class.getName());
LoopController loopController = new LoopController();
loopController.setLoops(1);
loopController.setFirst(true);
loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
loopController.setProperty(TestElement.GUI_CLASS, LoopControlPanel.class.getName());
loopController.initialize();
ThreadGroup threadGroup = new ThreadGroup();
threadGroup.setName("Example Thread Group");
threadGroup.setNumThreads(1);
threadGroup.setRampUp(1);
threadGroup.setSamplerController(loopController);
threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
threadGroup.setProperty(TestElement.GUI_CLASS, ThreadGroupGui.class.getName());
TestPlan testPlan = new TestPlan("Create JMeter Script From Java Code");
testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel().createTestElement());
testPlanTree.add(testPlan);
HashTree threadGroupHashTree = testPlanTree.add(testPlan, threadGroup);
threadGroupHashTree.add(examplecomSampler);
SaveService.saveTree(testPlanTree, new FileOutputStream(jmeterHome + "/bin/test.jmx"));
}
}
Рекомендации: