0

我正在使用 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 子句(并且只使用了第二个),但这会发出索引超出范围错误。

任何想法表示赞赏,谢谢!

4

0 回答 0