それで、私はインターネットで少し探し回って、誰かがすでにここで車輪を発明したかどうかを確かめようとしています。私がやりたいのは、現在のプロジェクトを解析し、特定のメソッドへのすべての参照を見つけ、その引数を見つけて、データベースでその引数をチェックする統合テストを作成することです。例えば:
public interface IContentProvider
{
ContentItem GetContentFor(string descriptor);
}
public class ContentProvider : IContentProvider
{
public virtual ContentItem GetContentFor(string descriptor)
{
// Fetches Content from Database for descriptor and returns in
}
}
他のクラスは、IOCを使用してIContentProviderをコンストラクターに注入し、次のように記述できるようにします。
contentProvider.GetContentFor("SomeDescriptor");
contentProvider.GetContentFor("SomeOtherDescriptor");
基本的に、単体テストはこれらすべての参照を検索し、テキストのセット["SomeDescriptor"、 "SomeOtherDescriptor"]を検索します。次に、データベースをチェックして、これらの記述子に行が定義されていることを確認できます。さらに、記述子はハードコーディングされています。
すべての記述子に対して列挙値を作成することはできますが、列挙には何千もの可能なオプションがあり、それはちょっとしたハックのようです。
さて、SOに関するこのリンク:Reflection + C#ですべての参照を取得する方法は、基本的に、非常に高度なIL解析なしでは不可能であると述べています。明確にするために; Reflectorなどは必要ありません。実行できる自動テストであるため、チームの他の開発者がDBレコードを作成せずにこのコンテンツを呼び出すコードをチェックインすると、テストは失敗します。
これは可能ですか?もしそうなら、誰かが見るためのリソースや変更するためのサンプルコードを持っていますか?
編集:あるいは、すべての参照を見つけようとするこのVSを行う別の方法ですか?最終結果は、レコードが存在しないときにテストを失敗させたいということです。