繁体   English   中英

我们可以在SoapUI Pro的Groovy TestStep中使用Java代码吗?

[英]Can we able to use Java code in Groovy TestStep in SoapUI Pro?

我正处于使用SoapUI Pro学习Groovy的初期阶段。 所以我开始在Groovy Teststep编辑器中编写简单的脚本,如下所示

class Hello {
    static void main(String args[]) {
        log.info("Welcome");
    }
}

当我通过单击SoapUI Pro中的“运行”按钮执行此脚本时,它将引发以下错误消息。

错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:Script16.groovy:5:意外令牌:[@第5行,第30列。static void main(String args [])^ org.codehaus.groovy.syntax.SyntaxException:意外令牌:[@第5行,第30列。位于org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:107)上的org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:139) org.codehaus.groovy.control.CompilationUnit处的org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:236)$ 1.call(CompilationUnit.java:163)在org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits (org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:544)处的org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:520)处的(CompilationUnit.java:839)。 groovy.control.CompilationUnit.compile(CompilationUnit.java:497)在groovy.lang.GroovyClassLoader.doParseClass(GroovyC lassLoader.java:306)在groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:287)在groovy.lang.GroovyShell.parseClass(GroovyShell.java:731)在groovy.lang.GroovyShell.parse(GroovyShell.java:743) )在groovy.lang.GroovyShell.parse(GroovyShell.java:770)在groovy.lang.GroovyShell.parse(GroovyShell.java:761)在com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.compile(SoapUIGroovy java:148)在com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:93)在com.eviware.soapui.support.scripting.groovy.SoapUIProGroovyScriptEngineFactory $ SoapUIProGroovyScriptEngine.run(Source:File:在com.eviware.soapui.impl.wsdl.panels.teststeps.GroovyScriptStepDesktopPanel $ RunAction $ 1.run(Groovy.com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:149) )在java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)在java.util.concurr ent.ThreadPoolExecutor $ Worker.run(未知源),位于java.lang.Thread.run(未知源)原因:Script16.groovy:5:30:意外令牌:[位于org.codehaus.groovy.antlr.parser.GroovyRecognizer org.codehaus.groovy.antlr.parser.GroovyRecognizer.parameterDeclarationList(GroovyRecognizer.java:7397)的org.codehaus.groovy.antlr.parser.GroovyRecognizer(GroovyRecognizer.23.parameterDeclaration(GroovyRecognizer.java:8413) )在org.codehaus.org.codehaus.groovy.antlr.parser.GroovyRecognizer.classField(GroovyRecognizer.java:5936)在org.codehaus.groovy.antlr.parser.GroovyRecognizer.declaration(GroovyRecognizer.java:2140)处。位于org.codehaus.groovy.antlr.parser.GroovyRecognizer.classDefinition(GroovyRecognizer.java:1942)的antlr.parser.GroovyRecognizer.classBlock(GroovyRecognizer.java:5236)在org.codehaus.groovy.antrortype.parser.ternal GroovyRecognizer.java:1822),位于org.codehaus.groovy.antlr.parser.GroovyRecognizer.statement(GroovyR org.codehaus.groovy.antlr.parser.GroovyRecognizer.compilationUnit(GroovyRecognizer.java:757)位于org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:ecognizer.java:1305)。更多1个错误

我不确定我做错了什么以及解决该问题所要做的事情。

谢谢
卡鲁纳加拉·潘迪(Karunagara Pandi)

Groovy与Java有99%的代码兼容性。 因此,您可以在Groovy脚本中直接使用Java。

您的问题是您要声明一个main方法。 在SoapUI Groovy脚本步骤中,您无需声明方法。 您只需开始编写代码。 请参阅Groovy文档以获取更多信息。

因此,您的脚本应为:

log.info("Welcome");

没有class ,没有static void main ,只有那一根内胆!

您的语法错误。

更换:

String args[]

与:

String[] args

或者简单地:

args

更新 (日志)

引发MPE,因为您没有日志字段的声明。 尝试添加以下导入:

import groovy.util.logging.Slf4j

并注释@ Slf4j注释。 另请参阅此处 不知道日志如何与SoapUI一起工作。

class Hello {
    def log = this.log;
    void main(String[] args) {
        log.info("Welcome");
    }
}

出:2016年10月26日星期三12:22:35美国东部时间:INFO:欢迎

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM