简体   繁体   English

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

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

I'm in the initial stage of learning Groovy with SoapUI Pro. 我正处于使用SoapUI Pro学习Groovy的初期阶段。 So I started writing simple script in Groovy Teststep editor as shown below 所以我开始在Groovy Teststep编辑器中编写简单的脚本,如下所示

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

When I execute this script by clicking on the "Run" button from SoapUI Pro, it is throwing the following error message. 当我通过单击SoapUI Pro中的“运行”按钮执行此脚本时,它将引发以下错误消息。

Error: 错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script16.groovy: 5: unexpected token: [ @ line 5, column 30. static void main(String args[]) ^ org.codehaus.groovy.syntax.SyntaxException: unexpected token: [ @ line 5, column 30. at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:139) at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:107) at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:236) at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:163) at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:839) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:544) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:520) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:497) at groovy.lang.GroovyClassLoader.doParseClass(GroovyC 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) at 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) at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:149) at com.eviware.soapui.impl.wsdl.panels.teststeps.GroovyScriptStepDesktopPanel$RunAction$1.run(GroovyScriptStepDesktopPanel.java:274) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurr 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(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: Script16.groovy:5:30: unexpected token: [ at org.codehaus.groovy.antlr.parser.GroovyRecognizer.parameterDeclaration(GroovyRecognizer.java:8413) at org.codehaus.groovy.antlr.parser.GroovyRecognizer.parameterDeclarationList(GroovyRecognizer.java:7397) at org.codehaus.groovy.antlr.parser.GroovyRecognizer.variableDefinitions(GroovyRecognizer.java:2311) at org.codehaus.groovy.antlr.parser.GroovyRecognizer.declaration(GroovyRecognizer.java:2140) at org.codehaus.groovy.antlr.parser.GroovyRecognizer.classField(GroovyRecognizer.java:5936) at org.codehaus.groovy.antlr.parser.GroovyRecognizer.classBlock(GroovyRecognizer.java:5236) at org.codehaus.groovy.antlr.parser.GroovyRecognizer.classDefinition(GroovyRecognizer.java:1942) at org.codehaus.groovy.antlr.parser.GroovyRecognizer.typeDefinitionInternal(GroovyRecognizer.java:1822) at org.codehaus.groovy.antlr.parser.GroovyRecognizer.statement(GroovyR 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 ecognizer.java:1305) at org.codehaus.groovy.antlr.parser.GroovyRecognizer.compilationUnit(GroovyRecognizer.java:757) at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:130) ... 21 more 1 error org.codehaus.groovy.antlr.parser.GroovyRecognizer.compilationUnit(GroovyRecognizer.java:757)位于org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:ecognizer.java:1305)。更多1个错误

I'm not sure what wrong did I do and what I have to do for solving this issue. 我不确定我做错了什么以及解决该问题所要做的事情。

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

Groovy is 99% code-compatible with Java. Groovy与Java有99%的代码兼容性。 So you can use straight up Java in a Groovy script. 因此,您可以在Groovy脚本中直接使用Java。

Your problem is that you are declaring a method main . 您的问题是您要声明一个main方法。 In a SoapUI Groovy Script step you do not declare a method. 在SoapUI Groovy脚本步骤中,您无需声明方法。 You just start writing code. 您只需开始编写代码。 See Groovy documentation for additional information. 请参阅Groovy文档以获取更多信息。

So your script should be just: 因此,您的脚本应为:

log.info("Welcome");

No class , no static void main , just that one liner! 没有class ,没有static void main ,只有那一根内胆!

You've bad syntax. 您的语法错误。

Replace: 更换:

String args[]

with: 与:

String[] args

or simply: 或者简单地:

args

UPDATE (log) 更新 (日志)

MPE is thrown because You don't have a declaration for log field. 引发MPE,因为您没有日志字段的声明。 Try adding the following import: 尝试添加以下导入:

import groovy.util.logging.Slf4j

and annotate the @Slf4j annotation. 并注释@ Slf4j注释。 Also see here . 另请参阅此处 Don't know how logging works exactly with SoapUI. 不知道日志如何与SoapUI一起工作。

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

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

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

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