2016-12-14 7 views
-2

문자열을 파일 콘텐츠와 비교하려고하며 동등하거나 유사한 지 여부를 주장하려고합니다.두 개의 동일한 문자열이 어설 션을 전달하지 않습니다.

처럼 :

13CB0000000000X15.xml (input) 
13CB0000000000X15.xml (expected (content of file)) 

내 어설 : 그것의 하지 동일 말한다 때문에

assertTrue("Tatsaechliches Ergebnis weicht von '" 
+ expectedResultFileName + "' ab!", result.equals(expected)); 

이 주장은 어떻게 든 실패?!

내 파일은 BOM이없는 UTF-8입니다. LF/CRLF 또는 기타가 없습니다. 심지어 함께 트림하려고했습니다 :

String expected = readFile(testDataBasePath + 
    File.separator + expectedResultFileName, encoding); 
    expected = expected.trim(); 

    String result = document.getDocumentElement().getChildNodes().item(0).getNodeValue();    
    result = result.trim(); 

나는 무엇이 누락 되었습니까?

+0

그래서이 문자열에 포함 된 바이트를 확인하지 않았고 어느 바이트가 없거나/잉여입니까? – Tom

+5

힌트 : 문자열이 같지 않다는 것을 equals()가 알려주면; 그때 그들은 arent. 문자를 현명하게 비교해보십시오. – GhostCat

+0

감사합니다. @GhostCat, 해결 방법은 ur methode입니다. 레코드의 경우 : 'char [] first = w1.toLowerCase(). toCharArray(); char [] second = w2.toLowerCase(). toCharArray(); int minLength = Math.min (first.length, second.length); for (int i = 0; i 0x45

답변

0

문자열이 동일하지 않습니다. 그들은 으로 인쇄 할 때 동등 할 수도 있지만, 다른 유형의 공백 문자와 같은 트릭이 많이 있습니다. 모두 똑같습니다. 또는 일부 글꼴과 거의 구별 할 수없는 낮은 숫자의 l과 대문자 인 I을 섞으면됩니다.

힌트 : assertTrue(..., a.equals(b)) 대신 assertEquals(..., a, b)을 사용하는 것이 좋습니다. 전자는 일부 IDE에서 더 나은 메시지를 제공하여 문자열이 다른 위치를 정확히 보여줍니다.