我试图检查2个字符串是否相等,但是我正在点击。两个字符串都是空的:
Condition not satisfied:
versionTagPrefix == ""
| |
"" false
2 differences (0% similarity)
("")
(--)
我也试过等于:
Condition not satisfied:
"".equals(versionTagPrefix)
| |
false ""
版本:
compile 'org.codehaus.groovy:groovy-all:2.0.1'
testCompile "org.spockframework:spock-core:0.7-groovy-2.0"
答案 0 :(得分:3)
据我所知,groovy有很多字符串实现。
当您在输出/错误流中看到消息时,您可能正在查看toString()
的值而不是实际的对象内容。
要深入调试,请在对象上使用.properties
属性。
groovy:000> i=10; s1="$i"; "type=${s1.class}\n
content=${s1.properties}\n
out=${s1.toString()}"
===> type=class org.codehaus.groovy.runtime.GStringImpl
content=[values:[10],
class:class org.codehaus.groovy.runtime.GStringImpl,
bytes:[49, 48], strings:[, ], valueCount:1]
out=10
groovy:000>s2="10"; "type=${s2.class}\n
contents=${s2.properties}\n
out=${s2.toString()}"
===> type=class java.lang.String
contents=[class:class java.lang.String, bytes:[49, 48], empty:false]
out=10
虽然在这种情况下s1 == s2
,您可能会遇到s1 != s2
但s1.toString() == s2.toString()
assert versionTagPrefix?.toString() == ""