1

なぜこれが機能しないのですか?何もしない前と何もしなかった後の空のデータベースが同じであることをテストしようとしています。言い換えれば、これは私が考えることができるデータベースを使用した最も単純なdbunitテストです。そして、それは機能しません。テスト方法は、実際にはhttp://www.dbunit.org/howto.htmlから削除されています。

空のデータベースを比較するために表示されるエラーメッセージは次のとおりです。

java.lang.AssertionError: expected:
org.dbunit.dataset.xml.FlatXmlDataSet<AbstractDataSet[_orderedTableNameMap=null]>
but was:
org.dbunit.database.DatabaseDataSet<AbstractDataSet[_orderedTableNameMap=null]>

空のテーブルを比較するために表示されるエラーメッセージは次のとおりです。

java.lang.AssertionError: expected:
<org.dbunit.dataset.DefaultTable[_metaData=tableName=test, columns=[], keys=[], _rowList.size()=0]>
but was:
<org.dbunit.database.CachedResultSetTable[_metaData=table=test, cols=[(id, DOUBLE, noNulls), (txt, VARCHAR, nullable)], pk=[(id, DOUBLE, noNulls)], _rowList.size()=0]>

(読みやすくするために改行を追加しました)

役立つ場合は、フルスタックトレース(またはその他)で編集できます。または、公開gitリポジトリを閲覧することもできます:https ://bitbucket.org/djeikyb/simple_dbunit

適切に比較するために、実際のIDataSetをxmlに変換してから、IDataSetに戻す必要がありますか?私は何をしている/間違っていると予想していますか?

 34 public class TestCase
 35 {
 36 
 37   private IDatabaseTester database_tester;
 38 
 39   @Before
 40   public void setUp() throws Exception
 41   {
 42     database_tester = new JdbcDatabaseTester("com.mysql.jdbc.Driver",
 43                                             "jdbc:mysql://localhost/cal",
 44                                             "cal",
 45                                             "cal");
 46 
 47     IDataSet data_set = new FlatXmlDataSetBuilder().build(
 48         new FileInputStream("src/simple_dbunit/dataset.xml"));
 49     database_tester.setDataSet(data_set);
 50 
 51     database_tester.onSetup();
 52   }
 53 
 54   @Test
 55   public void testDbNoChanges() throws Exception
 56   {
 57     // expected
 58     IDataSet expected_data_set = new FlatXmlDataSetBuilder().build(
 59         new FileInputStream("src/simple_dbunit/dataset.xml"));
 60 
 61     // actual
 62     IDatabaseConnection connection = database_tester.getConnection();
 63     IDataSet actual_data_set = connection.createDataSet();
 64 
 65     // test
 66     assertEquals(expected_data_set, actual_data_set);
 67   }
 68 
 69   @Test
 70   public void testTableNoChanges() throws Exception
 71   {
 72     // expected
 73     IDataSet expected_data_set = new FlatXmlDataSetBuilder().build(
 74         new FileInputStream("src/simple_dbunit/dataset.xml"));
 75     ITable expected_table = expected_data_set.getTable("test");
 76 
 77     // actual
 78     IDatabaseConnection connection = database_tester.getConnection();
 79     IDataSet actual_data_set = connection.createDataSet();
 80     ITable actual_table = actual_data_set.getTable("test");
 81 
 82     // test
 83     assertEquals(expected_table, actual_table);
 84   }
 85 
 86 }
4

1 に答える 1

2

IDataSetおよび他のDBUnitコンポーネントを比較する場合は、DBUnitが提供するassertメソッドを使用する必要があります。

JUnitが提供するassertメソッドを使用する場合、それはのequalsメソッドを介してのみ比較されObject ます。そのため、異なるオブジェクトタイプについて不平を言うエラーが発生します。

于 2012-05-17T05:06:19.843 に答える