如何从外部文件中包含 groovy 脚本?
我试图使用:
def script = new GroovyScriptEngine('d:/soapui/payment.v2').with {
loadScriptByName( 'proxy.groovy' )
}
this.metaClass.mixin script
但我得到:
更新
是否有可能将我的方法打包到 jar 或类似的东西中,并从中使用它们Script TextArea
?
最简单的方法是使用SOAPUI 中的Groovy Test Step 来使用 GroovyScriptEngine运行外部脚本。我使用GroovyUtils来查找项目的路径,以便将整个项目保存在一个地方以帮助源代码控制、编辑等。
import groovy.lang.Binding
import groovy.util.GroovyScriptEngine
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
// location of script file is relative to SOAPUI project file.
String scriptPath = groovyUtils.projectPath + "/groovy/"
// Create Groovy Script Engine to run the script.
GroovyScriptEngine gse = new GroovyScriptEngine(scriptPath)
// Load the Groovy Script file
externalScript = gse.loadScriptByName("Utility.groovy")
// Create a runtime instance of script
instance = externalScript.newInstance()
// Sanity check
assert instance!= null
// run the foo method in the external script
instance.foo()
您还可以在 java (eclipse) 中创建脚本,然后将其导出为 jar 并添加到 soapui。
这是步骤:
重新启动soapui,现在您可以导入和使用soapui中的脚本,如下所示。
创建一个 groovy 步骤并导入 jar
导入包名.类名
调用函数为:
类名.函数名(参数);
试试这个:
GroovyShell gs = new GroovyShell(getBinding());
gs.evaluate(new File('path/to/external.groovy').text);
甚至这样:
evaluate(new File('path/to/external.groovy'));
ExpandoMetaClass.enableGlobally()
对于 mixin 错误消息,如果您使用then ,您可能会摆脱它this.metaClass = null
。一开始,在你开始混音之前。