【问题标题】:Can we able to use Java code in Groovy TestStep in SoapUI Pro?我们可以在 SoapUI Pro 的 Groovy TestStep 中使用 Java 代码吗?
【发布时间】:2014-08-30 02:23:08
【问题描述】:

我正处于使用 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.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。 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) 在 groovy.lang.GroovyClassLoader.doParseClass(Groo vyClassLoader.java:306) 在 groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:287) 在 groovy.lang.GroovyShell.parseClass(GroovyShell.java:731) 在 groovy.lang.GroovyShell.parse(GroovyShell.java:743) ) 在 com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.compile(SoapUIGroovyScriptEngine.compile(SoapUIGroovyScriptEngine. java:148) 在 com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:93) 在 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(Unknown Source) urrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 原因:Script16.groovy:5:30: 意外令牌:[ 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 ) 在 org.codehaus.groovy.antlr.parser.GroovyRecognizer.classField(GroovyRecognizer.java:5936) 在 org.codehaus.groovy 的 org.codehaus.groovy.antlr.parser.GroovyRecognizer.declaration(GroovyRecognizer.java:2140)。 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) 在 org.codehaus.groovy.antlr.parser.GroovyRecognizer.statement(Groo vyRecognizer.java:1305) 在 org.codehaus.groovy.antlr.parser.GroovyRecognizer.compilationUnit(GroovyRecognizer.java:757) 在 org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:130) ... 21多1个错误

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

谢谢
卡鲁纳加拉潘迪

【问题讨论】:

    标签: java groovy scripting automation soapui


    【解决方案1】:
    class Hello {
        def log = this.log;
        void main(String[] args) {
            log.info("Welcome");
        }
    }
    

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

    【讨论】:

      【解决方案2】:

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

      你的问题是你声明了一个方法main。在 SoapUI Groovy 脚本步骤中,您无需声明方法。您只需开始编写代码。更多信息请参见Groovy documentation。

      所以你的脚本应该是:

      log.info("Welcome");
      

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

      【讨论】:

        【解决方案3】:

        你的语法不好。

        替换:

        String args[]
        

        与:

        String[] args
        

        或者简单地说:

        args
        

        更新(日志)

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

        import groovy.util.logging.Slf4j

        并注释@Slf4j 注释。另见here。不知道日志记录是如何与 SoapUI 一起工作的。

        【讨论】:

        • 嗨 Opal,我按照您的建议尝试了。但我无法得到结果。所以我改变了这样的脚本 ----- import java.io.*;类 Hello { void getMessage(String msg) { log.info(msg); } static void main(String[] args) {你好你好=新你好(); hello.getMessage("欢迎");现在,它抛出 groovy.lang.MissingPropertyException:No such property: log for class: Hello 错误。 :(
        • 嗨 Opal,感谢您的快速回复,但在脚本顶部包含该行后,我什至没有得到脚本的结果。如果你不是我的,你能分享一下简单的java代码(在类内)脚本来使用“log.info”打印一个字符串数据吗?谢谢
        • 很遗憾,我无法测试它。
        猜你喜欢
        • 2014-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多