Asakusa Framework Advent Calendar 2014およびExcel Advent Calendar 2014の20日目です。
Asakusa Frameworkは並列分散処理するバッチアプリケーションを開発・実行する為のフレームワークです。
AsakusaFWではテスト機構も用意しており、バッチ(やバッチ内のフロー)のテストデータをExcelで記述することが出来ます。
すなわち、入力データと、「こういう結果になるはず」という検証データおよび検証ルールをExcelで書いておくことで、JUnitを使ってAsakusaFWのテストドライバーを実行すると、入力データを使ってバッチ(やフロー)を実行して結果を検証してくれます。
(ちなみに、入力データおよび検証データにはJSONを使うことも出来ます、使ったこと無いけど^^; また、テストドライバー関連のクラスを作ることで、任意の方式が使えます)
AsakusaFWのサンプルプロジェクトだと、Excelファイルはデータの種類(データモデル)毎に用意しています。
これは、例えばマスター類は共有して複数のテストで使用できるという考え方かと思います。
なお、Excelファイルの雛形はAsakusaFWによって生成することが出来ますが、これも1データモデルにつき1ファイルとなります。
一方、DMDL EditorXでフローのテストクラスを生成した場合、同時にExcelファイルも生成しますが、1つのExcelファイル内に複数のデータモデルのシートが入る形式になります。
これは、テストクラスとExcelファイルを1:1で対応させるという考え方です。
まぁ、どのExcelファイル(およびシート)を使うかはテストクラス内に記述するので、マスターデータだけ別Excelファイルを使うといったことも可能です。
(余談ですが、セルの入力値をプルダウンで選択できるようにする入力規則がありますが、他シートの値を参照する方式って、最新のExcelでは非推奨になったみたいですね。Excelファイルを開く度に警告が出ます(苦笑))
AsakusaFWがExcelファイルを生成するのはApache POIを使っています。DMDL EditorXも同じです。
POIはJavaだけで動くので、Linux上でもExcelファイルを操作できたりして、ものすごく便利です。セルに書かれた計算式を演算することまで出来るとは思っていませんでした。
が、その一方で、基本的な機能が欠けていたりします。
例えば、シートやセルのコピーが出来ません。
セルのコピーは自作する(セルの要素をコピーする)しかないですが、しかし、入力規則を作成できるのに読み込めないとか、ハイパーリンクを作ったり読んだりできるのに削除できない、といった問題がありますorz
この辺りどうにかならないかな、と思って、POIのプルリクエストを作成してみました。
POIはSVNでソース管理しているらしいですが、GitHubにもミラーリングされています。フォークしてプルリクエストを送ることも可能です。
で、試しに(ろくすっぽ説明も書かずに)プルリクエストを投げてみたんですが、いくつかはマージされたようです(驚)
ただ、プルリクエストのクローズの仕方が分からないんですよね。こちらで勝手にクローズしてよいものなのか、リリースされたらクローズされるのか…?
誰か教えてください(笑)
※コメント投稿者のブログIDはブログ作成者のみに通知されます