如何在 JSR223 中存储自定义对象?

How to store a custom object in JSR223?

我在 Jmeter 中将我的自定义侦听器设置为 JSR223 侦听器。

目前它在测试期间将记录附加到文本文件然后调用侦听器 运行(我认为这对测试准确性不利),但我不希望收集所有数据(通过侦听器)并保存测试结束后一片祥和(在拆解部分)

Google 找到了很多方法来存储像字符串这样的单个变量,但是如果我想存储大量复杂的数据集,这是不可接受的。是否可以通过 JSR223 以某种方式存储我的自定义对象的 Java 数组(或类似的东西)作为全局变量(在设置阶段的某处创建),可用于每个 JSR223 lisneners/Samplers 等?

如果我制作了“datakeeper”单例,它会像我预期的那样工作吗(我不知道 GC 是如何为 JSR223 工作的,它会不会清理这个,它是否可用于其他 JSR223 实例)并且它好吗解决我的问题?

只需使用 props shorthand 代表正常 Properties 依次为:

  1. 全局并且可以在其他线程组和这个JVM实例中的任何地方访问
  2. 可以存储任何你想要的Object,而不仅仅是字符串

因此,如果您执行以下操作:

 props.put('myObject', yourObject)

在设置线程组中

您将能够在其他任何地方获得 props.get('myObject') 的值

有关此 props 和其他 JMeter API shorthand 的更多信息 - Top 8 JMeter Java Classes You Should Be Using with Groovy

你问题中的这个短语大量复杂的数据集敲响了警钟。在内存中存储如此大量的数据会对您的执行产生不利影响。您可以预计线程会意外终止,主要是由于 OutOfMemoryException。此外,如果 JMeter 崩溃,您将丢失在那之前捕获的所有统计信息。您可以调整堆设置,但这只是一个补丁工作,并不是您问题陈述的真正解决方案。

您可以继续使用当前的方法保存到本地文件。