take-finallyのAssertを環境毎に切り替え

@DBFlute, DBFlute.NET, Java, C#
0.9.5.3でのこの記事の続きという感じですが、
http://d.hatena.ne.jp/jflute/20090828/1251470538
0.9.5.4からは、それぞれのAssertを「dataLoadingType」ごとに
切り替えられるようにしました。
要は「このAssertはUT環境だけ」みたいなことができます。

そもそもdataLoadingTypeとは?ですが、
replaceSchemaDefinitionMap.dfpropにて指定します。
例えば、「dataLoadingType = foo」であれば、
ReplaceSchemaのデータ登録時に「playsql/data/foo」配下の
データが登録されるようになります。
つまり「単体テスト結合テスト・本番初期状態」といった環境毎に
Assertを切り替えることができます。

やり方は以下のような感じ:
(もちろん、take-finally.sqlにて)
-- #df:assertListZero@ut#
-- 会員住所情報の有効期間で(現在日時で)重複がないこと
select member.MEMBER_ID as MEMBER_ID
     , count(member.MEMBER_ID) as SELECTED_COUNT
     , min(address.MEMBER_ADDRESS_ID) as MIN_ADDRESS_ID
     , max(address.MEMBER_ADDRESS_ID) as MAX_ADDRESS_ID
     , CURRENT_DATE as TARGET_DATE
  from MEMBER member
    left outer join MEMBER_ADDRESS address
      on member.MEMBER_ID = address.MEMBER_ID
     and address.VALID_BEGIN_DATE <= CURRENT_DATE
     and address.VALID_END_DATE >= CURRENT_DATE
 group by member.MEMBER_ID
   having count(member.MEMBER_ID) > 1 
;
assertListZeroの後の「@ut」がポイントです。
これで「ut」のときにだけ実行されるようになります。

「ut」では存在するけど「real(本番)」では存在しないはず、
というようにやりたい場合は以下のように書きます。
-- #df:assertCountExists@ut#
-- #df:assertCountZero@real#
select count(*) from MEMBER member
;
何も指定しなければ、今まで通りどのdataLoadingTypeでも
実行されます。どの環境でも変わらない「業務的な制約」に
関しては、何も指定せずに全ての環境で実行されるようにでOKです。

主な用途は「テストデータとしてのAssert」です。
「テストケースとしてこういうパターンがなければならない」
というようなチェックが可能になり、
「テストデータのデグレ防止」につながります。

今までの開発にはあまりない発想かもしれませんが、
さんざんデバッグ作業して結局テストデータが悪いだけだったときの
ショック(とコスト)は大きいですから、一日二日の誰か一人作業確保して
代表的なチェックだけでも記述すれば、かなり安心感が増すのでは
ないでしょうか。(開発中でもリリース後のメンテナンスでも)