2012年12月13日木曜日

単体テストのこと


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

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


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

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

なるほど、単体テスト。


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

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

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


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

2 件のコメント:

  1. このコメントは投稿者によって削除されました。

    返信削除
    返信
    1. Excelでデータベースの取り込みやのデータ取得/更新するなら、ExcelDBToolをお勧めします。
      テーブルのデータをエクセルに取得、更新、削除することだけではなく、複数のSQLを実行して、結果を
      一括Excelの各シートに出力することもできます。

      http://www.superdbtool.com
      ベクターからもダウンロードできます。
      Oracle,SQL Server,DB2,Sybase,MySQL,Postgre,Sqlite対応。

      使い方動画:
      http://superdbtool.com/blog/basic-guide

      またExcelDBToolを使って、本番擬似ランダムテストデータを一括作成することは非常に簡単です。
      是非お試しください。
      作成できるダミーデータ種類(69種類):
      郵便番号, 都道府県, 企業名, 市区,町村,最寄駅,最寄駅ふりがな,路線,銀行コード, 銀行名, 銀行カタカナ, 支店コード, 支店名, 支店カタカナ,E-Mail, URL, 携帯, 苗字のみ, 氏名, 住所, 住所ふりがな,性別, 年齢, 血液型, 固定電話, 婚姻, ふりがな, 大学名,身長,体重固定値,国籍,国籍英語,国籍英語略,クレジットカード会社,クレジットカード番号,有効期限,IPアドレス,業種大分類,業種大分類名称,業種中分類,業種中分類名称,業種小分類,業種小分類名称,職種大分類,職種大分類名称,職種中分類,職種中分類名称,職種小分類,職種小分類名称,数値連番,整数・小数点数,英数混在,文字列+連番,文字列+全角連番全角漢字,ひらがな,全角カタカナ,半角カタカナ,全角英数,全角数値,全角英字,全半混在日付,時間,タイムスタンプ,特殊文字

      Oracle,SQL Server,DB2,Sybase,MySQL,Postgre,Sqliteもご利用できます。

      削除