Ошибка теста JUnit при сравнении двух похожих файлов xml

Я пытался реализовать тест с помощью dbunit, но у меня не получилось.

Подводить итоги

  • У меня есть XML-файл импорта для моей поддельной базы данных, inputFlatXmlDataSet.xml и
  • Я создаю файл экспорта outputFlatXmlDataSet.xml
  • последний тест должен убедиться, что оба файла равны

Но это не так. Невооруженным глазом разницы никакой, даже diff с eclipse или notepad++ ничего не показывает.

Я следовал этому руководству: http://www.scub-foundation.org/accueil/tutoriaux/tutorial-dbunit/

Я предупреждаю вас, что это французский учебник, я подозреваю, что кодировка второго файла не UTF-8, но мне не удалось заставить запись в UTF-8.

Все файлы и код такие же, как и в руководстве, за исключением TestDBUnit.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 в качестве Wrapper, чтобы принудительно выполнить кодировку, но это ничего не изменило.

Если вам нужна дополнительная информация, пожалуйста, не стесняйтесь.


person redaLyazidi    schedule 17.04.2013    source источник
comment
Что такое FileUtils? Это из Apache commons-io?   -  person longhua    schedule 17.04.2013
comment
Вы пытались вывести inputDataSetString и outputDataSetString, а затем сравнить их?   -  person longhua    schedule 17.04.2013
comment
Если возможно, опубликуйте эти два XML-файла. Для сравнения XML-файлов лучше использовать xmunit.sourceforge.net.   -  person longhua    schedule 17.04.2013


Ответы (1)


Использование равенства строк для сравнения XML-файлов неразумно, если только вы не тестируете библиотеку генерации XML и не заботитесь о красивой печати.

Во всех остальных случаях вас, вероятно, заботит семантическое равенство двух файлов (т. е. содержат ли они одни и те же данные?). Чтобы облегчить такое сравнение, рассмотрите возможность использования XMLUnit. Это позволит сравнить содержимое ваших файлов, не беспокоясь о пробелах или кодировке.

person Duncan Jones    schedule 17.04.2013