- 2.1. 参照メソッドのテスト
- 2.2. テストデータの作成
- 2.3. テストデータの登録
- 2.4. テストメソッドの実装
- 2.5. テストデータの後片付け
- 2.6. DatabaseOperation
2.3 テストデータの登録
それでは、テストクラスを作成しましょう。最初にテストデータをテーブルに投入します。
protected void setUp() { IDatabaseConnection connection =null; try{ super.setUp(); Connection conn=getConnection(); connection =new DatabaseConnection(conn); //現状のバックアップを取得 QueryDataSet partialDataSet = new QueryDataSet(connection); partialDataSet.addTable("ACCEPT_ORDER"); file=File.createTempFile("accept",".xml"); FlatXmlDataSet.write(partialDataSet, new FileOutputStream(file)); //テストデータを投入する IDataSet dataSet = new FlatXmlDataSet( new FileInputStream("accept_order_test_data.xml")); DatabaseOperation.CLEAN_INSERT.execute(connection,dataSet); }catch(Exception e){ e.printStackTrace(); }finally{ try{ if(connection!=null) connection.close(); }catch(SQLException e){} } }
まず、org.dbunit.database.IDatabaseConnectionを取得します。IDatabaseConnectionはDBUnitの各ツールを利用するための、データベースへの接続を提供します。IDatabaseConnectionはインタフェースですので、インタフェースを実装しているorg.dbunit.database.DatabaseConnectionのインスタンスを生成します。コンストラクタの引数はjava.sql.Connectionです。
IDatabaseConnection connection =null; try{ super.setUp(); Connection conn=getConnection(); connection =new DatabaseConnection(conn);
次に、現状のテーブルのバックアップを取得します。
//現状のバックアップを取得 QueryDataSet partialDataSet = new QueryDataSet(connection); partialDataSet.addTable("ACCEPT_ORDER"); file=File.createTempFile("accept",".xml"); FlatXmlDataSet.write(partialDataSet, new FileOutputStream(file));
まず、データセットを表すorg.dbunit.database.QueryDataSetインスタンスを作成します。次に、addTableメソッドを使用し、このデータセットに追加するテーブルを指定します。ここでは、accept_orderテーブルのデータのバックアップを取得し、QueryDataSetに格納しますので、引数に"ACCEPT_ORDER"と指定します。最後に、データの内容を一時ファイルに出力します。ファイルへの出力は、org.dbunit.dataset.xml .FlatXmlDataSetのwriteメソッドを使用します。accept_orderテーブルのデータが、作成した一時ファイルにXML形式で保存されます。
最後に、テストデータをデータベースに登録します。
//テストデータを投入する IDataSet dataSet = new FlatXmlDataSet( new FileInputStream("accept_order_data.xml")); DatabaseOperation.CLEAN_INSERT.execute(connection,dataSet);
最初に、accept_order_data.xmlファイルを読み込んで、org.dbunit.dataset.IDataSetを作成しています。IDataSetはDBUnitでテーブルデータを表すものです。次に、実際にテーブルの操作を行います。テーブルの操作はorg.dbunit.operation.DatabaseOperationのexecuteメソッドを使用します。executeメソッドの第一引数はIDatabaseConnectionです。2番目の引数は、IDataSetです。DatabaseOperation.CLEAN_INSERTはDatabaseOperationオブジェクトです。CLEAN_INSERTと指定することにより「テーブルのデータをすべて削除し、IDataSetにあるデータを登録する」という操作を行います。