XML 형식이 올바른지 확인하는 단위 테스트를 작성하고 있지만 이것이 실패하고 이유를 파악할 수 없습니다.Groovy Pretty Print 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
어설 션 실패 : Windows에서, 그루비 2.0.7을 사용하여 내가 Grails를 2.2.1을 사용하고
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>
, 7
아마 OS 라인과 관련된 일이다 분리 기호?
편집은 내가 파일에 두 문자열을 저장하고
파싱 된 XML (XmlUtils)는 행 분리로 CL+RF
을 가지고 있지만, prettyXml
는 LF
을 가지고 ++ 메모장 확인. 나는 또한 같은 결과와 함께 다중 라인 선언 대신에 \n
을 사용하여 테스트했다!
Groovy는 Windows 줄 구분 기호이므로 항상 CL+RF
을 사용하지 않아야합니까? Groovy String/GString docs에서
이상한 EOL 바이트 및 내용을 확인하기 위해 16 진수 편집기에서 두 버전을 모두 여는 방법은 무엇입니까? – Will
[어쩌면 xmlunit 시도] (http://stackoverflow.com/questions/13727876/comparing-two-xml-strings-files-in-groovy-java)? –
@WillP 좋은 캐치. 때로는 뇌가 일하는 것을 멈추는 데 많은 시간을 보냈습니다. 내 업데이트 확인 –