【问题标题】:dbUnit data typesdbUnit 数据类型
【发布时间】:2009-08-14 03:55:11
【问题描述】:

我正在使用 dBUnit 并试图用实际的 DB 数据集断言我的预定义 FlatXmlDataSet 的一行。问题是当数据来自 FlatXmlDataSet 时,我的验证码字段的 getValue 返回一个字符串,而当它来自实际的实时数据库时,它返回一个整数。对于任何不是字符串的数据类型都是如此。我可以写一些东西在比较之前将所有内容转换为字符串,但是有更好的方法吗?

我的代码:

    IDataSet initialSet = setupDBWithData("test.xml", true);
    ITable initialTable = initialSet.getTable("USER");

    String response = doTestSendVerificationPin();
    assertOKResponse(response);

    ITable userTable = _databaseTester.getConnection().createTable("USER");

    // Make sure old user row is left unchanged
    assertRowsEqual(initialTable, 0, userTable, 0);

...(进一步向下)

protected void assertRowsEqual(ITable expected, int rowExpected, ITable actual, int rowActual) throws Exception
{
    ITableMetaData metaData = expected.getTableMetaData();
    Column [] cols = metaData.getColumns();

    for (int i = 0; i < cols.length; i++)
    {
        String colName = cols[i].getColumnName();
        assertEquals(expected.getValue(rowExpected, colName), actual.getValue(rowActual, colName));
    }

}

这是我啜饮的 test.xml:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE dataset SYSTEM "../Tests/testdata/common/some.dtd"> 

<dataset>
  <USER ID="132" FIRST_NAME="Joe" LAST_NAME="Bob" VERIFICATION_CODE="1869" />
</dataset>

【问题讨论】:

    标签: java unit-testing junit dbunit


    【解决方案1】:

    很抱歉,如果这不能准确回答您的问题,但在我看来,这似乎是一种使用 DBUnit 的不寻常方式。通常您使用 DBUnit 将数据加载到数据库中,然后使用 SQL 查询数据库并将其与其他一些已知结果进行比较。我还没有看到任何人尝试将 DBUnit IDataSet 作为断言的一部分进行比较 - 我不认为 DBUnit 打算以这种方式使用。

    【讨论】:

    • 实际上我正在这样做——抱歉,我忘了在我的代码中添加一些东西——现在应该更清楚了。基本上我 1. 用数据集中的预装内容预先填充我的数据。 2. 在我的操作后查询真实数据库(_databaseTester.getConnection().createTable("USER") 这样做),并且 3. 断言我的数据与我的原始预填充数据相比没有任何不利的变化。
    • 嗯...不确定。我的印象是 DBUnit 在插入(使用 DB 表元数据)之前不知道数据集的类型,但 getTableMetaData() 方法让我不这么想。您可能需要查看此源代码。
    【解决方案2】:

    我猜你正在使用flat-xml 格式,这意味着你正在阅读FlatXmlDataSet 实例。如果我是正确的,您可以使用FlatXmlDataSetBuilder 将数据集元数据从从数据库读取的数据集中复制到从文件读取的数据中。

    另一种方法是使用 DTD 或完整的数据集格式,因为 flat-xml 有一些限制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多