最近、テスト駆動型開発にますます浸透し、TDDを考えながら書くコードが増えるにつれて、テストの程度について検討しなければならないように思えます私は書くべきです。どのような単位のテストを私自身のプロジェクトのために書くべきかという個人的な方針を設定したいと思っています。ここでテストライティング戦略に関するアドバイス
私は現在直面してい意思決定の例...
私は三つのクラス...
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();
}
}
を持って、私はのためのI Userクラスのためのデータアクセス層を持っています既に "GetUser"テストの設定があります。ご覧のとおり、私のビジネスロジックには、UserManager.GetTop5()メソッドがあります。このメソッドは、ユーザーがデータベースから取り出した上位5つのお気に入りを返します。このメソッドは非常に単純で、現在は外部リソースや依存関係はありません。
私の質問は、この "GetTop5"ファンクションポイントの別のテストを書きますが、失敗する可能性はほとんどありません。
今後機能を拡張する場合は、テストを設定してください。それとも、ここのテストが過度だと思いますか?
これはまさに私がそれを乗り越えていると思うようなものです。上に書いたケースをビジネスの観点から正当化するのはかなり難しいようです。しかし個人的には、それが良い方法かどうかは疑問だ。 –
私自身は単体テストにかなり慣れてきました。しかし、あなたのように、私はあまりにも多くをやっていると思う。来るケントの引用だけで、その感情を高めた。どのようにそれが揺れていくのかわからない...まだそれを考えている。 –
機能のみを直接テストします。機能は他のすべてを間接的にテストします。 –