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>
Windows7でGroovy2.0.7を使用するGrails2.2.1を使用しています。
たぶん、OSの行区切り文字に関連するものですか?
編集
両方の文字列をファイルに保存し、Notepad++で確認しました
解析されたxml(XmlUtils)にはCL+RF
行区切り文字がありますが、prettyXml
には。しかありませんLF
。\n
複数行の宣言の代わりに使用してテストしたところ、同じ結果になりました。
CL+RF
これはWindowsの行区切り文字なので、Groovyは常に使用する必要はありませんか?