我正在编写一个单元测试来验证 xml 的格式是否正确,但这失败了,我不知道为什么。
所以我决定测试这篇博文的代码并在 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>
我在 Windows 7 上使用 Grails 2.2.1,它使用 Groovy 2.0.7。
也许与操作系统行分隔符有关?
编辑
我将两个字符串都保存到文件中,并使用 Notepad++ 进行了检查
解析的 xml (XmlUtils) 具有CL+RF
作为行分隔符,但prettyXml
只有LF
. 我还测试了使用\n
而不是多行声明,结果相同!
Groovy 不应该CL+RF
总是使用,因为这是 Windows 行分隔符?