2012年12月13日木曜日

単体テストのこと


自動テストを書くのが最近の目標。だがどういうテストを書けばよいかさっぱり分からない。

VisualStudioのテスト自動生成機能でテストを作りはするものの、一回しか動かさないで放置してることが多々あり。
よくあるのがデータベースにアクセスするメソッドのテストを実行してみたら
テストデータが整っていないせいでテスト失敗して、面倒になって放置というパターン。


「レガシーコード改善ガイド」という本で
データベースとやり取りするようなテストは単体テストではないという記述を見かけた。

理由:単体テストはコードに変更を加えるたびに高速で実行される必要があるため。

なるほど、単体テスト。


テストが容易な ASP.NET MVC アプリケーションを構築する
http://msdn.microsoft.com/ja-jp/magazine/dd942838.aspx

リポジトリパターンでテスト時にモックモデルを突っ込めるようにすれば、DBアクセス無しに単体テストが実行できそう。

とりあえずビジネスロジック系の単体テストをつくることを目標にしようかと思った。
結合テストとかはそれができてから考えていくとして。


関係ないけどレガシーコード改善ガイドに書いてあった
「コードをテストで保護する」という表現が気に入った。早く保護して安心感を得たい。