2013-04-17 1 views
3

dbunit을 사용하여 테스트를 구현하려고했지만 실패했습니다.두 개의 유사한 XML 파일을 비교하는 동안 JUnit 테스트 실패

내 가짜 데이터베이스 가져 오기 XML 파일을

  • 을 요약하면, inputFlatXmlDataSet.xml
  • 나는 내보내기 파일을 outputFlatXmlDataSet.xml
  • 최종 테스트가되어 생성 두 파일이 같음을 보장합니다.

하지만 그렇지 않습니다. 육안으로는 아무런 차이가 없으며 심지어는 일식이나 메모장에서 차이가 있지만 ++는 아무 것도 보여주지 않습니다. http://www.scub-foundation.org/accueil/tutoriaux/tutorial-dbunit/

내가 두 번째 파일의 인코딩을 의심, 당신은 프랑스 튜토리얼의 경고 UTF-8, 되지하지만 난 UTF에서 쓰기를 강제로 관리하지 않았다

나는이 튜토리얼을 따라 -8.

TestBUnit.java을 제외한 모든 파일 및 코드는 튜토리얼의 내용과 동일합니다. 래퍼는 인코딩을 강제로하지만 아무것도 변경하지 않은으로

public void testExportData() throws Exception { 
    // On récupère le jeu de données du fichier XML 
    IDataSet dataSet = getDatabaseDataSet(); 

    // Fichier XML du jeu de données d'import 
    File inputFile = new File(INPUT_DATA_SET_FILENAME); 
    // On vérifie que le fichier existe 
    assertNotNull(inputFile); 
    // Fichier XML du jeu de données d'export 
    File outputFile = new File(OUTPUT_DATA_SET_FILENAME); 
    FileOutputStream(outputFile), "UTF-8"))); 
    FlatXmlDataSet.write(dataSet, new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8")); 
    // On compare les deux fichiers XML pour vérifier qu'ils sont identiques 
    String inputDataSetString = FileUtils.readFileToString(inputFile/*, 
      "UTF-8"*/).replace(" ", "\t").trim(); 
    String outputDataSetString = FileUtils.readFileToString(outputFile/*, 
      "UTF-8"*/).replace(" ", "\t").trim(); 
    assertEquals(inputDataSetString, outputDataSetString);//The failure 

내가 그냥 OutputStreamWriter을 추가
다음은 코드입니다.

자세한 내용을 원하면 언제든지 문의하십시오.

+0

'FileUtils는 무엇입니까? 그것은 아파치 commons-io에서입니까? – longhua

+0

'inputDataSetString'과'outputDataSetString'을 출력하고 비교해 보셨습니까? – longhua

+0

가능하면이 두 개의 XML 파일을 게시하십시오. http://xmlunit.sourceforge.net/을 사용하여 XML 파일을 비교하는 것이 좋습니다. – longhua

답변

3

XML 생성 라이브러리를 테스트하고 예쁜 인쇄를 신경 쓰지 않는다면 XML 파일을 비교하는 데 문자열 동일성을 사용하는 것은 현명하지 않습니다. 다른 모든 경우에

, 당신은 아마 두 파일의 의미 평등에 대한 관심 (즉 가 같은 데이터를 포함합니까?). 이러한 비교를 돕기 위해 XMLUnit을 사용해보십시오. 이것은 공백이나 인코딩에 대한 걱정없이 파일 내용을 비교합니다.

관련 문제