3

我试图用 dbunit 实现测试,但我失败了。

总结一下

  • 我有一个用于我的假数据库的导入 xml 文件inputFlatXmlDataSet.xml
  • 我生成一个导出文件outputFlatXmlDataSet.xml
  • 最后的测试是确保两个文件相等

但他们不是。肉眼没有区别,即使与 eclipse 或 notepad++ 的差异也不显示任何内容。

我遵循了本教程:http ://www.scub-foundation.org/accueil/tutorialaux/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

我只是添加一个OutputStreamWriteras Wrapper 来强制编码,但它没有改变任何东西。

如果您想了解更多详情,请不要犹豫。

4

1 回答 1

4

使用字符串相等来比较 XML 文件是不明智的,除非您正在测试 XML 生成库并关心漂亮的打印。

在所有其他情况下,您可能关心两个文件的语义相等性(即它们是否包含相同的数据?)。为了帮助进行此类比较,请考虑使用XMLUnit。这将比较文件的内容,而无需担心空格或编码。

于 2013-04-17T09:04:27.337 回答