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」です。
「テストケースとしてこういうパターンがなければならない」
というようなチェックが可能になり、
「テストデータのデグレ防止」につながります。

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

ピザハウス ココペリ

ピザハウス ココペリ
北海道旭川当麻町にあるピザ屋さんです。
とにかくピザがおいしくって空気もおいしくって景色もおいしくって。
森の中に突然現れるログハウス、テーブルも椅子も木のぬくもりで
一杯で本当に落ち着きます。天気がよければ大雪山の景色が見える
そうですが、残念ながら自分は雲で逃しました。
それでもすごい良い景色でしたよ。
ハウス内は完全禁煙で安心しておいしく食事ができます。

しかしながら初めての人は行くのは結構大変。
公開されている住所ですが、「当麻町中央6区」
ちょっとAbstract過ぎるんだけど何かOverrideし忘れてない!?
とついつい言いたくなってしまうかもしれませんが、
とにかく当麻駅から「140号線」を北東へ進んで、
左手に見える「当麻スキー場」の「向かい(つまり右手)」です。
ちなみにカーナビで電話番号入力しても、「近い場所」ということで
山の反対側の道に連れてかれる可能性があります(連れてかれた)。
(ここに限らず広い大地ではあり得る話なのでカーナビ過信注意ですね)

ぜひ、また行きたいなと。
こういう素敵なお店が普段近くにもあったらいいなぁと思ったりします。

#
# 禁煙スタイルで紹介されています。
# http://www.kinen-style.com/gourmet/6781.html
#