Asakusa Framework Advent Calendar 2014の13日目です。
AsakusaFW0.7.0が出たときに紹介し忘れていた地味な便利機能、KEY_SEGMENT_SEPARATORについて。
(「地味」は重要です。DQ10の地味祭を参照)
AsakusaFW0.7.0で、テストに使われるPropertyNameクラスにKEY_SEGMENT_SEPARATORというフィールドが追加になっています。
ドキュメントには何の説明も載っていませんが、Javadocにはちゃんと公開されています。
フロー(JobFlowやFlowPart)のテストを作成して実行すると、実行結果データと検証データが不一致だった場合に例外が発生します。
この例外メッセージにはどういうデータだったのかが出力されますが、このとき、プロパティー名はハイフン区切りになっています!
DMDL定義上はアンダースコア区切りだし、テストデータのExcelファイル上もアンダースコアなのですが。
なので、問題となったデータをExcel上から検索しようと思って例外メッセージからプロパティー名をコピーしても、ハイフンをアンダースコアに置換しないといけないのです!
そこで、KEY_SEGMENT_SEPARATORの出番です。
フローのテストクラスに以下のように記述して使います。
static {
System.setProperty(PropertyName.KEY_SEGMENT_SEPARATOR, "_");
}
これにより、例外メッセージのプロパティー名がアンダースコア区切りになるのです!
なんか、AsakusaFW内部では、プロパティー名を「区切り文字で分割した文字列のList」として扱っているみたいなんですね。それを例外メッセージに出力するときに、今まではハイフンで繋いでいたということみたいです。
なお、DMDL EditorXに「フローのテストクラスの雛形を作成する機能」がありますが、0.7.0以降のプロジェクトでその機能を使用すると、上記のコードが勝手に追加されます
が、便利だからいいでしょ?(笑)
※コメント投稿者のブログIDはブログ作成者のみに通知されます