Groovy单元测试神秘失败

Groovy单元测试神秘失败,groovy,Groovy,我正在Groovy中测试一些简单的XML解析和以下测试: assertEquals("TestSuiteParameter1", testSuite.props[0].name) 给出了一个非常恼人的错误: expected:<TestSuiteParameter1> but was:<TestSuiteParameter1> testSuite.props[0].name可能是一个字符串,而不是GString,而左侧的“TestSuiteParameter1”则是一

我正在Groovy中测试一些简单的XML解析和以下测试:

assertEquals("TestSuiteParameter1", testSuite.props[0].name)
给出了一个非常恼人的错误:

expected:<TestSuiteParameter1> but was:<TestSuiteParameter1>

testSuite.props[0].name
可能是一个
字符串,而不是
GString
,而左侧的
“TestSuiteParameter1”
则是一个
GString
,使用双引号。更改为单引号,它可能会通过

这是groovy中的一个常见问题。令人困惑的是,
“x”!='x'

从文件中:

GString和String是两个不同的类,因此使用GString 对象作为涉及GString的映射对象或比较的键 对象,与字符串组合时可能会产生意外结果 GString和String之后的对象的哈希代码和 他们会平等吗


为什么不提供stacktrace呢?失败测试的源代码可能也很有用……我提供的错误是stacktrace的顶部,测试用例的其余部分正在工作,所以我不想把问题弄得一团糟。当然,我可能应该更清楚这个事实。这或多或少是个问题,但我必须在最后添加一个toString(),然后它才能工作。我不希望您需要
toString()
,除非
testSuite.props[0]。name
实际上也不是
String
。但是
toString()
肯定会强制它成为一个。
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