我正在Groovy中测试一些简单的XML解析以及以下测试:
assertEquals("TestSuiteParameter1", testSuite.props[0].name)
给出了一个非常烦人的错误:
expected:<TestSuiteParameter1> but was:<TestSuiteParameter1>
如果我使用Groovy assert关键字(但带有更奇怪的堆栈跟踪),我会得到相同的错误。我敢打赌,这种类型不匹配正在发生,但我太过于了解Groovy n00b。
以下是打印各自课程的内容:
println testSuite.props[0].name.getClass()
println "TestSuiteParameter1".getClass()
println 'TestSuiteParameter1'.getClass()
class groovy.util.slurpersupport.Attributes
class java.lang.String
class java.lang.String
答案 0 :(得分:2)
testSuite.props[0].name
可能是String
而不是GString
,而左侧的"TestSuiteParameter1"
则是双引号的GString
。改为单引号,它可能会通过。
这是groovy中的常见问题。令人困惑的是"x" != 'x'
。
来自文档:http://groovy.codehaus.org/Strings+and+GString
GString和String是两个不同的类,因此使用GString 对象作为Map对象的键或涉及GString的比较 对象,与String结合使用时会产生意外结果 对象,因为GString和String不具有相同的hashCode 他们是平等的。