石井さん、こんにちは。
赤坂です。
# 石井さんのページでは、一方的にお世話になっております m(_._)m。
石井 勝 <mishii@....jp> san wrote:
> > どんな環境で、何をテストしたいのかにもよりますが、
> > 単純に、Query(SQL文)が正しいかをテストするだけでも意味がありますよね。
> >
> > もしSQL文を作成するクラスが対象の単体テストなら、
> > 期待するSQLと assertEquals()するだけでも十分なのでは?
>
> うーん,そうでしょうか?
>
> SQL文は自由度が高すぎるので,SQL文自体のテストを書くのは難しいと思います.
>
> 例えば,SQL文に空白を一つ入れるだけでassertEqualsのテストは失敗してし
> まいますし,from句に書くテーブルのエイリアス名を変えるとか,in句をやめ
> てExists句で書き直すとか,とってくるデータは同じでもいろんな書き方がで
> きます.
>
> やはりSQL文を直接テストするのはやめたほうがいいと思いますが….SQL 文
> のリファクタリングができるテストじゃないと意味ないと思いますよ.
なるほど、確かにそうですね。
SQL文(文字列)を比較するテストは良くないみたいですね。
過去に生成するSQL文にあまり自由度がない(生成されるSQL文が予測できる)
ようなケースで文字列の比較でテストしてしまった経験があります。
# これってアンチパターン... f(^^;;
石井さん、ご指摘ありがとうございました。m(_._)m
sakamotoさん、ガセネタでした。すみません。
ではでは。
--
(株)オージス総研
赤坂 英彦 (Hidehiko AKASAKA)
akasaka@....jp
─ 「思い」がすべてを決める。