junit.framework.ComparisonFailure:值但值相等

时间:2013-01-19 08:55:31

标签: postgresql testing dbunit

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的连接

有什么问题?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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"});