Groovy单元测试神秘失败

时间:2012-04-24 10:53:09

标签: groovy

我正在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

1 个答案:

答案 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   他们是平等的。