⇧ う~む、紛らわしくならなければ良いけども...
DBUnitとは?
公式のドキュメントによりますと、
DbUnit is a JUnit extension (also usable with Ant) targeted at database-driven projects that, among other things, puts your database into a known state between test runs. This is an excellent way to avoid the myriad of problems that can occur when one test case corrupts the database and causes subsequent tests to fail or exacerbate the damage.
⇧ JUnitの拡張で、テストでデータベースを使うことができますと。
JUnitはと言うと、
JUnit is a unit testing framework for the Java programming language. JUnit has been important in the development of test-driven development, and is one of a family of unit testing frameworks which is collectively known as xUnit that originated with SUnit.
DBUnitでExcelを使う場合はApache POI系のライブラリが必要
で、
⇧ 上記サイト様によりますと、DBUnitでExcelを使う場合は、DBUnitの依存関係とは別に、Apache POI系のライブラリを導入する必要があるようです。
必要な依存関係としては、
⇧ 上記の表にまとまってはいる模様。
「.xlsx」に対応させるには、
- poi
- poi-ooxml
の2つがあれば良いってことですかね?
DBUnitに必要なApache POI系のライブラリのバージョンは不明というね...頑張ってエラーにならないバージョンを見つけるしかないんかね...
DBUnitでInvalid row number (65536) outside allowable range (0 65535)が出た
で、DBUnitでデータベースからテーブルのレコードを取得してきてExcelに書き込みしてたら、
Invalid row number (65536) outside allowable range (0 65535)
⇧ というエラーが出ましたと。
どうやら、テーブルのレコード数が多過ぎて、Excel2003までの行数の限界である65535行以上は書き込めないということで出るエラーかと。
Apache POIは、
⇧ 上記のドキュメントによりますと、大きく分けて、
- HSSF
.xlsに対応 - XSSF
.xlsxに対応
対応できるExcelの拡張子が分かれていて、DBUnitを普通に使うと、「.xls」対応で処理されてしまうらしく、65535行の縛りが発生してしまうそうな...
で、
⇧ 上記サイト様が、DBUnitでも「.xlsx」の行数(おそらく、)までいけるように改善してくれたようです。
ただ、データ量が多過ぎると、書き込みの処理でOutOfMemoryErrorが出てしまったけどね...JVMの起動時のメモリを増量したとしても限界があるしな...
テスト環境では、データベースにレコードを入れ過ぎないようにするしか無いんかな...
ちなみに、Microsoftのサポートのページの説明を見た限り、
⇧ Excelのバージョンが新しくても、
が上限らしいので、レコード数が膨大なデータベースのテストとかってどうしてるんですかね?
未曾有の情報化社会と言っても過言ではない昨今、レコード数が100万超えることなんて珍しくもなくなってくる気がするけども、どうテストするか知りたいものですね。
と言うか、
Invalid row number (1048576) outside allowable range (0..1048575)
⇧ のエラーになったら、対応方法が無いっぽい気がするんだが...
ちなみに、
⇧ DBUnitを使いやすくしたというDatabase Riderというライブラリは、「.xls」のみの対応らしい、残念。
「テスト駆動開発(Test-Driven Development)」は夢のまた夢ですかね...
毎度モヤモヤ感が半端ない...
今回はこのへんで。