2013-03-19 3 views
0

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을 가지고 있지만, prettyXmlLF을 가지고 ++ 메모장 확인. 나는 또한 같은 결과와 함께 다중 라인 선언 대신에 \n을 사용하여 테스트했다!

Groovy는 Windows 줄 구분 기호이므로 항상 CL+RF을 사용하지 않아야합니까? Groovy String/GString docs에서

+0

이상한 EOL 바이트 및 내용을 확인하기 위해 16 진수 편집기에서 두 버전을 모두 여는 방법은 무엇입니까? – Will

+2

[어쩌면 xmlunit 시도] (http://stackoverflow.com/questions/13727876/comparing-two-xml-strings-files-in-groovy-java)? –

+0

@WillP 좋은 캐치. 때로는 뇌가 일하는 것을 멈추는 데 많은 시간을 보냈습니다. 내 업데이트 확인 –

답변

0

, 그것은 멀티 라인 리터럴과 관련하여 말한다 :

이 [원문]에 관계없이 항상 의 '\ n'을 문자로 호스트의 라인 종료 규칙을 표현 체계.

그들은 불행하게도 왜 그런지 말하지 않습니다.

관련 문제