我们能否在SoapUI Pro中的Groovy TestStep中使用Java代码?

时间:2014-07-09 07:03:47

标签: java groovy scripting automation soapui

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

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

当我通过点击" Run"执行此脚本时来自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.transformCSTIntoAST(AntlrParserPlugin.java:139)org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java: 107)org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:236)org.codehaus.groovy.control.CompilationUnit $ 1.call(CompilationUnit.java:163)org.codehaus.groovy.control。 CompolUnit.applyToSourceUnits(CompilationUnit.java:839)org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:544)org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:520)at org .codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:497)at groovy.lang.GroovyClassLoader.doParseClass(Groo vyClassLoader.java:306)groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:287)at groovy.lang.GroovyShell.parseClass(GroovyShell.java:731)at groovy.lang.GroovyShell.parse(GroovyShell.java:743 )at groovy.lang.GroovyShell.parse(GroovyShell.java:770)at groovy.lang.GroovyShell.parse(GroovyShell.java:761)at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.compile(SoapUIGroovyScriptEngine。 java:148)at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:93)at com.eviware.soapui.support.scripting.groovy.SoapUIProGroovyScriptEngineFactory $ SoapUIProGroovyScriptEngine.run(SourceFile:89)在com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:149)的com.eviware.soapui.impl.wsdl.panels.teststeps.GroovyScriptStepDesktopPanel $ RunAction $ 1.run(GroovyScriptStepDesktopPanel.java:274) )java.util.conc上的java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) java.lang.Thread.run(未知来源)中的urrent.ThreadPoolExecutor $ Worker.run(未知来源)引起:Script16.groovy:5:30:意外令牌:[at org.codehaus.groovy.antlr.parser.GroovyRecognizer .parameterDeclaration(GroovyRecognizer.java:8413)org.codehaus.groovy.antlr.parser.GroovyRecognizer.parameterDeclarationList(GroovyRecognizer.java:7397)org.codehaus.groovy.antlr.parser.GroovyRecognizer.variableDefinitions(GroovyRecognizer.java:2311) )org.codehaus.groovy.antlr.parser.GroovyRecognizer.declaration(GroovyRecognizer.java:2140)org.codehaus.groovy.antlr.parser.GroovyRecognizer.classField(GroovyRecognizer.java:5936)org.codehaus.groovy。 orl.codehaus.groovy.antlr.parser.GroovyRecognizer.classDefinition(GroovyRecognizer.java:1942)org.codehaus.groovy.antlr.parser.GroovyRecognizer.typeDefinitionInternal( GroovyRecognizer.java:1822)org.codehaus.groovy.antlr.parser.GroovyRecognizer.statement(Groo vyRecognizer.java:1305)org.codehaus.groovy.antlr.parser.GroovyRecognizer.compilationUnit(GroovyRecognizer.java:757)at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:130)... 21更多1错误

我不确定我做了什么错误以及我必须做些什么来解决这个问题。

感谢
Karunagara Pandi

3 个答案:

答案 0 :(得分:1)

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

您的问题是您要声明方法main。在SoapUI Groovy脚本步骤中,您不声明方法。你刚开始编写代码。有关其他信息,请参阅Groovy documentation

所以你的脚本应该只是:

log.info("Welcome");

没有class,没有static void main,只有一个班轮!

答案 1 :(得分:0)

你的语法错误。

替换:

String args[]

使用:

String[] args

或简单地说:

args

更新(日志)

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

import groovy.util.logging.Slf4j

并注释@ Slf4j注释。另请参阅here。不知道日志记录如何与SoapUI完全一致。

答案 2 :(得分:0)

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

输出: 10月26日星期三12:22:35 EEST 2016:INFO:Welcome