如何在Groovy中使用if else语句?

时间:2014-12-10 03:03:02

标签: groovy

我正在使用Soapui的Groovy步骤。 以下代码运行良好但似乎很长且重复:

if(response.comp.type[3] == "value1")
log.info ("value1 is present")
else
log.info ("value1 is not present")

if(response.comp.bucket[3] == null)
log.info ("bucket = null")
else
log.info ("bucket is not null")

if(response.comp.cycle[3] == "new")
log.info ("settings cycle = new")
else
log.info ("settings cycle is null")

是否可以在一次测试中执行相同操作,而不是在每一行上重复IF和ELSE。 我尝试使用TRY CATCH,但我无法获得错误的堆栈跟踪。

任何人都可以帮助减少代码。 谢谢

2 个答案:

答案 0 :(得分:10)

由于字段各不相同,您仍然需要进行每项检查,但更简洁的形式是:

log.info (response.comp.type[3] == "value1" ? "value1 is present" : "value1 is not present")
log.info (response.comp.bucket[3] == null ? "bucket = null" : "bucket is not null")
log.info (response.comp.cycle[3] == "new" ? "settings cycle = new" : "settings cycle is null")

通过更多努力,您可以减少重复,但可能会使代码更难以阅读。 E.g。

log.info "bucket ${response.comp.bucket[3] == null ? '=' : 'is not'} null"

正如您所看到的,至少在这种情况下,第二种形式更难以阅读。

答案 1 :(得分:3)

我不知道这是否符合您的偏好,但您可以使用switch代替长if..else语句,如:

def x = response.comp.type[3]
switch(x){
  case "value1" : log.info("value1 is present")
  ...
  default: log.info("value is not present")
}

其中x是您要分配给它的值。并为response.comp.bucket[]response.comp.cycle[]

执行相同的操作

修改

我修改了代码,将x声明为response.comp.type [3]的持有者,并检查它是否具有“value1”。