当前位置: 首页 > 知识库问答 >
问题:

纯粹用Java创建一个新的JMeter测试,但另存为有效*.jmx

越嘉石
2023-03-14

我遵循这个线程中介绍的方法,然后按以下方式保存hashTree:

    FileOutputStream out = new FileOutputStream("test.jmx");
    SaveService.saveTree(hashTree, out);

是否可以保存和恢复已创建的测试?

另一方面,GitHub上有一个项目来创建和保存Test。结果到底是不是有效的JMX文件。

guiclass="TestPlanGui" testclass="TestPlan" 
    mc.setProperty(new StringProperty(TestElement.GUI_CLASS, this.getClass().getName()));
    mc.setProperty(new StringProperty(TestElement.TEST_CLASS, mc.getClass().getName()));

共有1个答案

米俊喆
2023-03-14

您很可能忘记设置以下属性:

  • testelement.test_class
  • testelement.gui_class

如果省略它们,您仍然可以使用JMeterEngine运行测试,但是在GUI中打开生成的脚本的尝试将失败。

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


    }
}
    null
 类似资料:
  • 现在我想纯用Java创建一个新的JMeter测试。但是我不知道如何配置Java采样器。我在这里看到了如何配置HTTP采样器的示例。我需要配置我的Java请求,而不是HTTPSampler。请协助。

  • 问题内容: 假设我有一个名为的课程, 我想创建一个新的ArrayList,其值将为type 。 我的问题是:我该怎么做? 我不懂Java Api。 我尝试了这个: 问题答案: 您正在寻找Java泛型 这是一个教程http://docs.oracle.com/javase/tutorial/java/generics/index.html

  • 我用两个请求来尝试这个测试计划,假设每个测试有一个惟一的头值。这是我当前测试计划的结构。 因此,现在使用此测试计划来运行多个线程,以测量发送到两个不同主机的POST请求的性能,但需要修改此测试计划,使不同的x1、x2、x3、…xn租户提交相同的线程(10个并发线程)。这意味着x1将并行提交10个请求,x2提交10个申请,依此类推。其余项目在测试计划中相同。 请建议是否有办法在JMeter中实现这一

  • 在Java(任何库)中,从像下面这样的json开始(具有嵌套字段、数组和嵌入文档): 然后应用以下jsonpath(作为示例,理想情况下是任何类型的jsonpath) 创建如下所示的json文档: 所以问题是:使用jsonpath不仅可以获取数据,还可以获取所有嵌套字段,并创建一个新的json作为输入的子集? 任何例子都像往常一样受到赞赏 注意:在对此进行了大量思考之后,我得出的结论是,我需要的是

  • 所以我有一个简单的Bell类,我正在测试垃圾收集: 如果我运行下面的代码段,它不会被垃圾回收 如果我只是检查参考资料。我住在下面,垃圾被收集了 你们能给我解释一下这是怎么回事吗?

  • 如标题所述。我花了一些时间在一个客户的网站上实现一个特定的字体。我在所有需要的css类上实现了字体。 在定义菜单链接的“A”类中,调用字体不起作用。为什么? 参见截图1和2。 例如,在“div.powered-by”类(它也像链接一样工作)上,它可以工作,而在“a”类(它定义菜单链接)上则不行。见截图。 调用字体不起作用: Div.Powered-通过调用字体Works: