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タイプで使用することです-その後、比較は常に yield します。これは、それらのケースの 1 つのように見えます。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 に答える