簡體   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