3

dbunit でテストを実現しようとしましたが、失敗しました。

総括する

  • 偽のデータベース用のインポート xml ファイル、inputFlatXmlDataSet.xml があります。
  • エクスポート ファイルoutputFlatXmlDataSet.xmlを生成します
  • 最後のテストは、両方のファイルが等しいことを確認することです

しかし、そうではありません。Eclipseやnotepad ++との差分でも何も表示されません。

私はこのチュートリアルに従いました: http://www.scub-foundation.org/accueil/tutoriaux/tutorial-dbunit/

これはフランス語のチュートリアルであることを警告します。2 番目のファイルのエンコーディングは 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

as Wrapper を追加しOutputStreamWriterてエンコーディングを強制しましたが、何も変わりませんでした。

さらに詳細が必要な場合は、ご遠慮なくお問い合わせください。

4

1 に答える 1

4

XML 生成ライブラリをテストしていて、プリティ プリントを気にしない限り、XML ファイルを比較するために文字列の等価性を使用するのは賢明ではありません。

他のすべての場合では、おそらく2 つのファイルのセマンティックの同等性に関心があるでしょう (つまり、同じデータが含まれているか? )。このような比較を支援するには、XMLUnitの使用を検討してください。これにより、空白やエンコーディングを気にすることなく、ファイルの内容が比較されます。

于 2013-04-17T09:04:27.337 に答える