0
junit.framework.ComparisonFailure: 
    value (table=XXX, row=XXX, col=XXX) 
expected:<2013-01-18 18:17:13.233099> 
 but was:<2013-01-18 18:17:13.233099>
    at org.dbunit.assertion.JUnitFailureFactory.createFailure(JUnitFailureFactory.java:39)...

我的代码:

    ...
    IDataSet actualDataSet = conn.createDataSet();
    XmlDataSet expectedDataSet = new XmlDataSet(getClass().getResourceAsStream("/data.xml"));               

    Assertion.assertEquals(expectedDataSet, actualDataSet);
    ...

conn - 连接到数据库 PostgreSql 7.1

怎么了?

4

2 回答 2

1

没有更多信息很难说,但看起来表示“table=XXX,row=XXX,col=XXX”中值的类可能存在问题。那是什么数据类型?一些类似“日期”的课程?它是否正确实施equals()

JUnit 等人的一个常见问题。是在不按值比较的assertEquals类型上使用-然后比较总是产生。这看起来像是其中一种情况。equals()false

于 2013-01-19T13:36:47.927 回答
0
org.dbunit.dataset.datatype.TimestampDataType.typeCast()

转换为 Timestamp 然后其他类比较对象。我不明白为什么它不起作用。

为了避免这个问题,我排除了列:

String[] actualTablenames = actualDataSet.getTableNames();
for (int i = 0; i < actualTableNames.length; i++) {
    ITable expectedTable = expectedDataSet.getTable(actualTableNames[i]);
...
ITable filteredActualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"changetime"});
于 2013-01-21T11:43:21.217 回答