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