java - 接收 JMeter 需要 saveservice 属性文件才能继续错误

标签 java testing load jmeter jmx

好吧,我已经查看了,但首先找不到,为什么我会收到此错误,其次,我无法通过搜索找到答案。

所以基本上我正在尝试使用 JMeter 运行测试计划。我基本上是复制/粘贴模板来运行现有的 .JMX 文件并创建新的测试计划,所有这些都使用纯 Java 代码。

第一个代码来自网络,运行现有的 .jmx 文件时

     public static void main() throws Exception {
    // JMeter Engine
    StandardJMeterEngine jmeter = new StandardJMeterEngine();



    // Initialize Properties, logging, locale, etc.
    JMeterUtils.loadJMeterProperties("/Users/jmoore/Documents/apache-jmeter-2.11/bin/jmeter.properties");
    JMeterUtils.setJMeterHome("/Users/jmoore/Documents/apache-jmeter-2.11/bin/jmeter.sh");
    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
    FileInputStream in = new FileInputStream("/Users/jmoore/dev/commerce/selenium/jmeter/src/test/testplans/test1.jmx");
    HashTree testPlanTree = SaveService.loadTree(in);
    in.close();

    // Run JMeter Test
    jmeter.configure(testPlanTree);
    jmeter.run();
}

第二个(如下)是尝试创建我自己的测试计划(来自网络的示例)

@Test
public void example() {

    //JMeter Engine
    StandardJMeterEngine jmeter = new StandardJMeterEngine();

    //JMeter initialization (properties, log levels, locale, etc)

    JMeterUtils.loadJMeterProperties("/Users/jmoore/Documents/apache-jmeter-2.11/bin/jmeter.properties");
    JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level
    JMeterUtils.initLocale();

    // JMeter Test Plan, basic all u JOrphan HashTree
    HashTree testPlanTree = new HashTree();

    // HTTP Sampler
    HTTPSampler httpSampler = new HTTPSampler();
    httpSampler.setDomain("https:/www.google.com/");
    httpSampler.setPort(80);
    httpSampler.setPath("/");
    httpSampler.setMethod("GET");

    // Loop Controller
    LoopController loopController = new LoopController();
    loopController.setLoops(1);
    loopController.addTestElement(httpSampler);
    loopController.setFirst(true);
    loopController.initialize();

    // Thread Group
    ThreadGroup threadGroup = new ThreadGroup();
    threadGroup.setNumThreads(1);
    threadGroup.setRampUp(1);
    threadGroup.setSamplerController(loopController);

    // Test Plan
    TestPlan testPlan = new TestPlan("Create JMeter Script From Java Code");

    // Construct Test Plan from previously initialized elements
    testPlanTree.add("testPlan", testPlan);
    testPlanTree.add("loopController", loopController);
    testPlanTree.add("threadGroup", threadGroup);
    testPlanTree.add("httpSampler", httpSampler);

    // Run Test Plan
    jmeter.configure(testPlanTree);
    jmeter.run();
}

第一个问题(第一个代码): 为了尝试运行现有的 .JMX 文件,我不断收到错误: “JMeter 需要 saveservice 属性文件才能继续”

但有趣的是,在我的/bin中,显然有一个saveservice.properties文件

第二个问题(第二个代码): 它运行良好,唯一的问题是我什至没有看到标准输出。当我做了一些研究时(谷歌和通过这里),它指出取消注释有关位于“jmeter.properties”文件中的摘要器的部分 - 太棒了,我做到了。我取消了以下注释:

summariser.out=true

所以我的问题是,如果取消注释并设置为“true”,为什么至少没有任何内容打印到屏幕上?我更喜欢第二种方式而不是第一种,因为我可以根据我的需要进行更多定制。

谢谢

最佳答案

  1. 要解决JMeter 需要 saveservice 属性文件才能继续,请在 StandardJMeterEngine 初始化和 JMeterUtils.loadJMeterProperties 之间添加下一行

    JMeterUtils.setJMeterHome("/Users/jmoore/Documents/apache-jmeter-2.11");
    
  2. 要在测试期间查看摘要器输出,请在 jmeter.configure(testPlanTree); 节之前添加下一行

    Summariser summer = null;
    String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");//$NON-NLS-1$
    if (summariserName.length() > 0) {
        summer = new Summariser(summariserName);
    }
    
    String logFile = "/path/to/results/file.jtl";
    ResultCollector logger = new ResultCollector(summer);
    logger.setFilename(logFile);
    testPlanTree.add(testPlanTree.getArray()[0], logger);
    

参见5 Ways To Launch a JMeter Test without Using the JMeter GUI有关如何从 Java 代码运行现有 .jmx 文件以及使用 JMeter Java API 创建新的 JMeter 测试的更多详细信息。

关于java - 接收 JMeter 需要 saveservice 属性文件才能继续错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25875438/

相关文章:

testing - 获取jmeter聚合报告信息到变量中

java - 从post请求中直接获取json信息

java - 如何在平板电脑上显示 Bitmap/Drawable 作为 centerCrop 以及在手机上显示 fitXY

testing - 限制 tf.data.Dataset 中的项目数

c++ - 模拟对象 C++

debugging - 解决仅在生产中发生的错误的不同方法

javascript - 如何将 URL 动态添加到 javascript 中,以使第二页的 div 显示在第一页上?

java - 如何在java中的xml文件中写入特殊字符(interpunct)?

java - Netty 写入所有连接的 channel

jQuery post 参数加载