Groovy 字符串比较不匹配,但为';包含';做

Groovy 字符串比较不匹配,但为';包含';做,groovy,soapui,Groovy,Soapui,我在使用groovy时遇到了一个奇怪的问题,我找到了一个解决方法,但我并不满意,所以也许有人可以帮助我: 我使用ReadyAPI 2.8。在我的测试用例中,我有groovy步骤。 在其中一个测试中,我从上一个测试步骤中恢复了一个字符串,如果它与字符串“TJA470”匹配,我希望执行一个特定的处理。前面的测试步骤给出了一个字符串,该字符串是ssh命令的输出 下面是groovy步骤代码: def hbox_ref = context.expand( '${get current HBox refer

我在使用groovy时遇到了一个奇怪的问题,我找到了一个解决方法,但我并不满意,所以也许有人可以帮助我:

我使用ReadyAPI 2.8。在我的测试用例中,我有groovy步骤。 在其中一个测试中,我从上一个测试步骤中恢复了一个字符串,如果它与字符串“TJA470”匹配,我希望执行一个特定的处理。前面的测试步骤给出了一个字符串,该字符串是ssh命令的输出

下面是groovy步骤代码:

def hbox_ref = context.expand( '${get current HBox reference#hbox_ref}' )
// this returns me the data as a String

log.info hbox_ref 
log.info "\"$hbox_ref\"" // to check if there is no spurious blank
log.info hbox_ref.class

log.info (hbox_ref == "TJA470") => returns false
log.info (hbox_ref.equals("TJA470")) => returns false
log.info (hbox_ref.contains("TJA470")) => returns true
以下是控制台结果:

Fri Sep 20 16:13:17 CEST 2019: INFO: TJA470

Fri Sep 20 16:13:17 CEST 2019: INFO: "TJA470
"
Fri Sep 20 16:13:17 CEST 2019: INFO: class java.lang.String
Fri Sep 20 16:13:17 CEST 2019: INFO: false
Fri Sep 20 16:13:17 CEST 2019: INFO: false
Fri Sep 20 16:13:17 CEST 2019: INFO: true
straighforward测试是==或等于,尽管存在差异,但我在相同类型的所有其他比较中都使用了这些差异,它是有效的

正如你在这里看到的,大多数逻辑案例返回false,我真的不知道为什么

如果我在“groovy游乐场”这样的工具中执行相同的脚本,它将按预期工作!:(

我根本不是groovy方面的专家,我肯定错过了一些东西,但我发现这很棘手

如果有人能帮忙。。。
谢谢

谢谢,所以我发现了问题: 通过复制/粘贴问题中的控制台返回,它表明文本末尾有一个特殊字符。这在SOAPUI日志输出中不可见。。。 我在脚本中添加了以下处理:

def hbox_ref = context.expand( '${get current HBox reference#hbox_ref}' )
hbox_ref = hbox_ref.replaceAll("[^a-zA-Z0-9]+","")

这给

log.info (hbox_ref == "TJA470") => returns true (at last !)
更优雅的解决方案(感谢SiKing):


不是使用replaceAll

你的3条日志行显示了什么?只是更新了说明我刚刚意识到控制台中有一个\n没有出现…只有在复制/粘贴之后才出现!@tim_yates感谢你的时间,就像在那后面有一条新行一样。你试过
hbox_ref.trim()
而不是replaceAll?事实上,我没有尝试过……它也很好用。谢谢
log.info (hbox_ref == "TJA470") => returns true (at last !)
(hbox_ref.trim() == "TJA470")