そのため、最近はテスト駆動開発に夢中になっており、tdd を考えながらコードを書くほど、書くべきテストの範囲について決定を下さなければならないように思えます。自分のプロジェクトでどのくらい単体テストを書くべきかについて個人的なポリシーを設定したいと思います.皆さんがどのようなアプローチを取っているかについてアドバイスをいただけないでしょうか.
これが私が現在直面している決定の例です...
私は3クラス...
public class User
{
public string Username { get; set; }
public List<Favorite> Favorties { get; set; }
}
public class Favorite
{
public string Username { get; set; }
public int rank { get; set; }
}
public class UserManager
{
public List<Favorite> GetTop5(User user)
{
var qry = from fav in user.Favorties.OrderBy(f => f.rank)
select fav;
return qry.Take<Favorite>(5).ToList();
}
}
「GetUser」テスト セットアップが既にある User クラスのデータ アクセス レイヤーがあります。ご覧のとおり、ビジネス ロジックには UserManager.GetTop5() メソッドがあり、DB から取り出したばかりのユーザーの上位 5 つのお気に入りを返します。この方法は非常に単純で、現在、外部リソースや依存関係はありません。
それで私の質問は、失敗する可能性はほとんどありませんが、この「GetTop5」関数ポイントの別のテストを作成していただけないでしょうか?
将来的に機能を拡張する場合に備えて、とにかくテストをセットアップしますか? それとも、ここでのテストは過剰だと思いますか?