0
我正在寫一個單元測試,驗證xml是否格式正確,但這是失敗的,我不明白爲什麼。Groovy漂亮打印XML斷言失敗
所以我決定測試代碼this blog post並在Grails控制檯中測試,它也失敗了。
import groovy.xml.*
def prettyXml = '''\
<?xml version="1.0" encoding="UTF-8"?>
<languages>
<language id="1">Groovy</language>
<language id="2">Java</language>
<language id="3">Scala</language>
</languages>
'''
// Pretty print a non-formatted XML String.
def xmlString = '<languages><language id="1">Groovy</language><language id="2">Java</language><language id="3">Scala</language></languages>'
assert XmlUtil.serialize(xmlString) == prettyXml
斷言失敗:
Assertion failed:
assert XmlUtil.serialize(xmlString) == prettyXml
| | | |
| | | <?xml version="1.0" encoding="UTF-8"?>
| | | <languages>
| | | <language id="1">Groovy</language>
| | | <language id="2">Java</language>
| | | <language id="3">Scala</language>
| | | </languages>
| | false
| <languages><language id="1">Groovy</language><language id="2">Java</language><language id="3">Scala</language></languages>
<?xml version="1.0" encoding="UTF-8"?>
<languages>
<language id="1">Groovy</language>
<language id="2">Java</language>
<language id="3">Scala</language>
</languages>
我使用Grails 2.2.1,使用Groovy的2.0.7,在Windows 7
也許是與操作系統相關的線東西分隔器?
編輯
我救了兩個字符串的文件,用記事本++
分析的XML(XmlUtils)有CL+RF
作爲行分隔符,但prettyXml
只有LF
檢查。我還測試了使用\n
而不是多行聲明,結果相同!
Groovy不應該總是使用CL+RF
,因爲這是Windows行分隔符?
如何在十六進制編輯器中打開兩個版本以檢查奇怪的EOL字節和內容? – Will 2013-03-19 20:08:57
[也許試試xmlunit](http://stackoverflow.com/questions/13727876/comparing-two-xml-strings-files-in-groovy-java)? – 2013-03-19 20:20:11
@WillP好的。有時候你花了很多時間看到你的大腦停止工作了。檢查我的更新 – 2013-03-19 20:22:32