NUNITを使用しています。Nunit テスト DLL から特定の種類のテストを取得したいと考えています。
カスタム属性を定義し、次のようにテスト メソッドに割り当てます。
[Test, Tier(Tier.Second)]
public void ThisIsMyTest()
{ ... }
これは私のカスタム属性の定義です:
public enum Tier
{
First = 1,
Second,
Third,
Fourth
}
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class TierAttribute : PropertyAttribute
{
public TierAttribute(Tier tier)
: base(tier)
{ }
}
ここで、特定の Tier 値を持つカスタム属性を使用するメソッドを選択したいと思います。
まず、アセンブリをロードします。
Type loadTests = ltAssm.GetType("Assm.Tests.LoadTests." + args[0]);
次に、次の属性で装飾されたテストのみを取得しようとします。
List<MethodInfo> tests = loadTests.GetMethods()
.Where(m => m.GetCustomAttributes(typeof(TierAttribute), true).Count() > 0).ToList<MethodInfo>()
.Where(t => (((t.GetCustomAttributes(typeof(TierAttribute), true).GetValue(0)))).ToString() == args[1]).ToList<MethodInfo>();
しかし、それは空になります。
ところで、上記のステートメントの最初の WHERE 句を使用せずに (そして 2 番目のみを使用して) 試してみましたが、範囲外のインデックス エラーが発生します。
任意のアイデアをいただければ幸いです。