2

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

1 回答 1

4

testSuite.props[0].name可能是 aString而不是 a GString,而"TestSuiteParameter1"左侧是 aGString凭借双引号。更改为单引号,它可能会通过。

这是 groovy 中的常见问题。令人困惑的是,"x" != 'x'

来自文档: http: //groovy.codehaus.org/Strings+and+GString

GString 和 String 是两个不同的类,因此使用 GString 对象作为 Map 对象的键或涉及 GString 对象的比较,在与 String 对象结合时会产生意想不到的结果,因为 GString 和 String 不会有相同的 hashCode 也不会等于。

于 2012-04-24T15:34:48.123 回答