好吧,我已经查看了,但首先找不到,为什么我会收到此错误,其次,我无法通过搜索找到答案。
所以基本上我正在尝试使用 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”,为什么至少没有任何内容打印到屏幕上?我更喜欢第二种方式而不是第一种,因为我可以根据我的需要进行更多定制。
谢谢
最佳答案
要解决
JMeter 需要 saveservice 属性文件才能继续
,请在 StandardJMeterEngine 初始化和 JMeterUtils.loadJMeterProperties 之间添加下一行JMeterUtils.setJMeterHome("/Users/jmoore/Documents/apache-jmeter-2.11");
要在测试期间查看摘要器输出,请在
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/