我正在使用 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)
{ }
}
现在我想选择使用具有特定层值的自定义属性的方法。
首先我加载我的程序集:
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 子句(并且只使用了第二个),但这会发出索引超出范围错误。
任何想法表示赞赏,谢谢!