簡體   English   中英

比較兩個類似的xml文件時JUnit測試失敗

[英]JUnit test failure while comparing two similar xml files

我嘗試用dbunit實現測試但是我失敗了。

總結一下

  • 我有一個偽造數據庫的import xml文件, inputFlatXmlDataSet.xml
  • 我生成一個導出文件outputFlatXmlDataSet.xml
  • 最后的測試是確保兩個文件都是等號

但他們不是。 肉眼沒有區別,甚至與日食或記事本的差異++都沒有顯示任何東西。

我遵循了這個教程: 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來強制編碼,但它沒有改變任何東西。

如果您想了解更多詳情,請不要猶豫。

使用字符串相等來比較XML文件是不明智的,除非您正在測試XML生成庫並關心漂亮的打印。

在所有其他情況下,您可能關心兩個文件的語義相等性(即它們是否包含相同的數據? )。 為了幫助進行這樣的比較,請考慮使用XMLUnit 這將比較文件的內容,而不必擔心空格或編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM