DBUnit 2章 参照メソッドのテスト
- 2.1. 参照メソッドのテスト
- 2.2. テストデータの作成
- 2.3. テストデータの登録
- 2.4. テストメソッドの実装
- 2.5. テストデータの後片付け
- 2.6. DatabaseOperation
2.2 テストデータの作成
データベースを操作する単体テストでは、メソッド実行前にテーブルにテストデータを投入したり、メソッド実行後にテーブルのデータを元に戻したりしなければいけません。この「データの整備」処理のプログラムは煩雑な上、実装者によりまちまちでした。これが、テストクラスの可読性と保守性を下げていた最大の原因です。DBUnitは、テーブルのデータ整備する機能を提供しています。
まずテストデータを準備します。DBUnitでは、テストデータはXMLファイルで用意するのが一番簡単です。
<dataset> <(テーブル名) (カラム名)="(値)" ..../> <(テーブル名) (カラム名)="(値)" ..../> </dataset>
ルート要素はdatasetです。テーブル名の要素を作成し、「カラム名="値"」の形式で指定します。今回、テストに必要なのは、Accept_Orderテーブルの以下のデータです。
o_num | c_num | p_num | dc_rate | option_price | employee | accept_date |
---|---|---|---|---|---|---|
5001 | 1000 | 501 | 5 | 30 | 101 | 2004-01-01 |
上のデータをaccept_orderテーブルに登録するための、XMLファイルは以下のようになります。
accept_order_data.xml
<?xml version='1.0' encoding="EUC-JP"?> <dataset> <accept_order o_num="5001" c_num="1000" p_num="501" dc_rate="5" option_price="30" employee="101" accept_date="2004-01-01" /> </dataset>
今回は、accept_orderテーブルに値を登録したいので、「accept_order」という名前の空要素を作成します。accept_order要素の属性は、各カラムのデータを表します。例えば「o_num="5001"」はo_numカラムの値が5001であることを表しています。
日付型のカラムの値を表現する場合は、以下のフォーマットで記述します。
データ型 | フォーマット |
---|---|
DATE | yyyy-MM-dd |
TIME | HH:mm:ss |
TIMESTAMP | yyyy-MM-dd HH:mm:ss.SSS000000 |
この例では、accept_orderテーブルのaccept_dateは日付型です。accept_dateに「2004年1月1日」を表すDATE型の値を挿入しようと考えています。この場合、accept_order要素のaccept_date属性の値には「2004-01-01」と指定します。