【问题标题】:Using if-else statement inside Groovy - spock test在 Groovy 中使用 if-else 语句 - spock 测试
【发布时间】:2017-02-15 16:44:40
【问题描述】:

目前,当我在 Groovy - spock when: 中使用 if else 时,只执行 if 而 else 不执行。有没有其他方法可以在 spock 测试中实现 if-else?我尝试了 switch case 并遇到了同样的情况。

if (value == 'x' || 'y' || 'z') {
    //execute below info
} else if (value == 'a') {
    //execute below info
}

【问题讨论】:

  • 为什么会有这个:``` || 'y' || 'y' ```?

标签: java testing groovy automated-tests spock


【解决方案1】:

由于常规事实 'y' 被视为布尔值 true,这就是不执行 else 的原因。

您可能试图对此进行评估:

if (value == 'x' || value == 'y' || value == 'y') {
    //execute below info
} else if (value == 'z'){
    //execute below info
}

但您也可以尝试将 if 表达式修改为:

if (value in ['x', 'y', 'y']) {...}

【讨论】:

  • 我使用了第二个,它有效。谢谢你的帮助! :)
【解决方案2】:

我不确定是否必须对此发表评论或回答。

else 块下的代码未执行,因为 value == 'x' || 'y' || 'y' 始终为真,因为字符文字 'y' 始终被评估为真。

非空字符串、GStrings 和 CharSequences 被强制为真。

试试这个:if (value == 'x' || value == 'y' )

【讨论】:

  • 知道了。谢谢德根!
猜你喜欢
  • 1970-01-01
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多