dbunitのエラー
データベース処理テスト用のdbunitですが、エクセルからの読み込みがうまくいかずハマる。
ハマりポイントは以下の4つ。
データの間に空白があるとダメ
以下のように、空白のセルがあると「NullPointerException」となる。
no | name | age |
---|---|---|
1 | tarou | 20 |
2 | (空) | 20 |
3 | hirosi | 35 |
非表示項目は無視されない
エクセルの列を「非表示」にしても、dbunitからは読み込まれて処理対象となる。
適切な解決法があるかもしれないが、非表示にしていた列をエクセルから削除することで解決。
セルの書式設定に注意
日付は「文字列」書式で入力されていないと、うまく処理されない。
「TypeCastException」が発生して、処理が中断される。
また、数値も「文字列」でなければうまく処理されない場合がある模様。
例えば、「文字列」に設定していなかった列の値が指数表示となり、正しく比較(assert)できなかった。
空白セルに注意
見た目は全項目が空の行を処理対象として読み込み、「NullPointerException」となる。
ググってもほとんど情報がヒットしませんでしたが、「A1」のセルを選択した状態で「Ctrl+End」を押したときに空白のセルが選択される場合、選択されているあたりが空データを持つ行として扱われているようです。
(行の切り貼りをしていると発生する?)
とりあえず処理対象としたい範囲を選択し、新しく作成したシートに貼り付けて、書式を再設定することで正常に処理されるようになりました。
フレームワークのハウツーは情報少ないとつらいですね。