Jmeter BSF使用Groovy,导入一个脚本';s函数对另一个函数的作用
我在Jmeter BSF中使用groovy,有时我的函数被频繁使用,可以移动到一些脚本中,而不是用作库。 我的方法是创建一个文件,比如“library.groovy”,并在其中添加一些函数Jmeter BSF使用Groovy,导入一个脚本';s函数对另一个函数的作用,groovy,jmeter,Groovy,Jmeter,我在Jmeter BSF中使用groovy,有时我的函数被频繁使用,可以移动到一些脚本中,而不是用作库。 我的方法是创建一个文件,比如“library.groovy”,并在其中添加一些函数 public void function() { println("hello!"); } 然后在我的BSF脚本中使用以下代码 import library.groovy; function(); 这两个文件位于同一目录中,但脚本拒绝定位库。我还试图显式地将这个函数包装到类中,但也没有效果 有人能
public void function()
{
println("hello!");
}
然后在我的BSF脚本中使用以下代码
import library.groovy;
function();
这两个文件位于同一目录中,但脚本拒绝定位库。我还试图显式地将这个函数包装到类中,但也没有效果
有人能提出解决办法吗
更新:
我尝试了互联网上描述的几乎所有可能的解决方案。在groovy控制台或Eclipse中工作的所有东西都不在Jmeter中。可能是因为BSF。有人知道一些解决方法吗?我认为您需要将助手方法包装在一个类中,然后导入该类。因此,助手方法文件应该包含
package library
class UsefulFunctions {
static function() {
println 'hello'
}
}
然后在测试脚本中,说
import static library.UsefulFunctions.*
function()
现在,这只是表面上的,但我希望它足以让您开始。我认为您需要将助手方法包装在一个类中,然后导入该类。因此,助手方法文件应该包含
package library
class UsefulFunctions {
static function() {
println 'hello'
}
}
然后在测试脚本中,说
import static library.UsefulFunctions.*
function()
现在,这只是一个表面现象,但我希望它足以让您开始。我最终得到了如下两个文件: “MyHelloClass.groovy” 还有“HelloScript.groovy”
然后我可以从Jmeter在BSF中运行“HelloScript.groovy”。我得到了如下两个文件: “MyHelloClass.groovy” 还有“HelloScript.groovy”
然后我可以从Jmeter在BSF中运行“HelloScript.groovy”。我刚刚遇到了这个问题,并以一种看起来更美观的方式解决了它。这基本上是winstaan74的答案,但需要额外的比特数才能使其工作 您拥有函数的groovy文件,名为say:MyJmeterFunctions.groovy:
package My.JmeterFunctions
public class MyHelloClass {
public void hello() {
println("Hello!");
}
}
然后从终端编译此文件:
$groovyc-d myJmeterFunctions myJmeterFunctions.groovy
并将其转换为jmeter安装的/lib文件夹中的.jar文件,以及jmeter附带的所有其他.jar文件
$jar cvf//apache-jmeter-2.8/lib/myJmeterFunctions.jar-C myJmeterFunctions
现在,重新启动jmeter。在你知道之前,它不会知道你的新.jar
最后,您有一个脚本,希望从中运行hello()函数,jmeter BSF断言/listener/where指向该脚本:
import My.JmeterFunctions.*
def my_hello_class_instance = new MyHelloClass();
my_hello_class_instance.hello();
这就是我的工作。如果您希望将.jar组织到不同于jmeter/lib的文件夹中,我相信您可以使用(从)运行jmeter:
$jmeter-Jsearch_path=/path/to/yourfunction.jar
但我自己并没有试过。我只是遇到了这个问题,并以一种对我来说更好看的方式解决了它。这基本上是winstaan74的答案,但需要额外的比特数才能使其工作 您拥有函数的groovy文件,名为say:MyJmeterFunctions.groovy:
package My.JmeterFunctions
public class MyHelloClass {
public void hello() {
println("Hello!");
}
}
然后从终端编译此文件:
$groovyc-d myJmeterFunctions myJmeterFunctions.groovy
并将其转换为jmeter安装的/lib文件夹中的.jar文件,以及jmeter附带的所有其他.jar文件
$jar cvf//apache-jmeter-2.8/lib/myJmeterFunctions.jar-C myJmeterFunctions
现在,重新启动jmeter。在你知道之前,它不会知道你的新.jar
最后,您有一个脚本,希望从中运行hello()函数,jmeter BSF断言/listener/where指向该脚本:
import My.JmeterFunctions.*
def my_hello_class_instance = new MyHelloClass();
my_hello_class_instance.hello();
这就是我的工作。如果您希望将.jar组织到不同于jmeter/lib的文件夹中,我相信您可以使用(从)运行jmeter:
$jmeter-Jsearch_path=/path/to/yourfunction.jar
但是我自己没有试过。正如我提到的,我试过这个,但在Jmeter BSF中总是出现“无法解析类”错误。正如我提到的,我试过这个,但在Jmeter BSF中总是出现“无法解析类”错误。不确定为什么,但是我在尝试你的代码时得到了这个结论:
javax.script.ScriptException:groovy.lang.MissingPropertyException:没有这样的属性:类的props:MyHelloClass
。不知道为什么,但我在尝试你的代码时得到了这个结论:javax.script.ScriptException:groovy.lang.MissingPropertyException:没有这样的属性:类的props:MyHelloClass
。