如何在groovy中使用if-else?

如何在groovy中使用if-else?,groovy,Groovy,我正在使用Soapui,我想添加一个groovy代码来断言json响应中的某个元素 如何将if-else语句与groovy一起用于以下代码: def jsonPayload = new File("C:/temp7/file.js").text import groovy.json.JsonSlurper def slurper = new JsonSlurper() def response = slurper.parseText(jsonPayload) if (assert respo

我正在使用Soapui,我想添加一个groovy代码来断言json响应中的某个元素

如何将if-else语句与groovy一起用于以下代码:

def jsonPayload = new File("C:/temp7/file.js").text

import groovy.json.JsonSlurper
def slurper = new JsonSlurper()
def response = slurper.parseText(jsonPayload)

if (assert response.comp.type[0] == "header")
println 'header is present'
else 'header is not present'
当我尝试此操作时,出现了错误org.codehaus.groovy.control.multipleComplationErrorSexception


谢谢

Groovy的编译器希望if测试中的代码的计算结果是正确的。如果我在Groovy控制台中运行此代码

assert true
我没有结果,如果我跑去哪里

assert true
"asdf"
我明白了

所以assert是一个语句,它的计算结果不是任何东西。尝试使用assert作为if语句的条件,如

if (assert true) {
    println('hello')
}
导致

1 compilation error:

unexpected token: assert at line: 1, column: 5
if的条件必须是一个表达式

断言适用于在断言不正确的情况下希望它大声失败的情况。不要使用assert,除非您希望它在不满足条件时引发异常

在这里,您似乎可以不使用断言:

if (response.comp.type[0] == 'header')
    println('header is present')
else
    println('header is not present')

谢谢Nathan的解释,但是如果我尝试上面的代码,它不会发生任何事情,即使我尝试“heade”而不是“header”,也会有任何消息。@kirk:可能是因为你在最后一行遗漏了println?好的,问题解决了,我使用log.info而不是println,谢谢Nathan
if (response.comp.type[0] == 'header')
    println('header is present')
else
    println('header is not present')