tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

test

DBのスキーマ変更をテストする

ずいぶん前から実施しているのだけど、書いてなかったので書きます。皆様は DB のスキーマ変更(ALTER TABLE)ってどうやって管理していますか?SQL 手打ちは論外として、事前に変更の SQL を作るとしても、テストしたいですよね?と、いうわけで、こんな感じ…

スクリプトのテスト

ふつうは、Test::Scriptをつかうのだけど、このモジュールは CPAN レイアウトじゃないとうまく動いてくれない。(blib とかみてるので、CPAN レイアウトにして、make test じゃないと動かないみたいです)ただ、どうしても「コンパイルエラーくらいはしらべた…

prove の並列実行の話

perl でテストスクリプトを実行する prove コマンドには -j という並列実行するオプションがあります。たとえば prove -j2 とすると、2プロセス作って並列実行されます。ただ、ウチのところのテストコードは基本的にストアドプロシージャのテストなので、DB …

subtest と Hook::LexWrap を使って xUnit みたいな setUp, tearDown をする

発見したのは結構前なのですが、twitter でつぶやいても(これとかこれ)、あんまり(っていうか全く)反響なかったのでこっちにも書いておきます。Perl でテストを書いているときに、xUnit の setUp/tearDown*1を使いたい場合、Test::Classを使ってテストを書い…

DBD::Mock の execute() 時のエラーを偽装する

DBD::Mock は $dbh->{mock_add_resultset} = { sql => 'BEGIN SOME_PROC(); END;', results => DBD::Mock->NULL_RESULTSET, failure => [ 12345, 'なんかエラー' ], }; こんな感じで、エラーコードを返すような仕込みができるらしいのだけど、RaiseError => …