NUnit中的自定义过滤器可能吗?

时间:2009-08-13 15:42:43

标签: nunit filter

是否可以定义自定义过滤器,以便NUnit只运行特定的测试?我的许多Nunit测试都标有自定义属性“BugId”。是否可以编写一个过滤器,以便我可以传入一个数字,只运行具有该属性和数字的测试?如果有,请显示模型或真实代码。

3 个答案:

答案 0 :(得分:5)

过滤器是否需要使用自定义属性,还是可以使用NUnit Category? 像

这样的东西
[Test]
[Category("BugId-12234")]
public void Test()
{
  ....
}

...然后使用/include=STR标志:

nunit-console /include=BugId-12234 ...

?我建议将Category子类化为自定义属性,但我认为这不允许您在属性中添加可切换参数...

答案 1 :(得分:3)

从NUnit 2.4.6开始,NUnit属性未被密封,子类将被识别为其基类。因此:

public class BugId : TestAttribute
{
    public BugId(int bugNumber) : base("Test for Bug #" + bugNumber) { }
}

[BugId(1)]
public void Test() {}
可以在命令行上调用

,如下所示:

nunit-console / include =“测试Bug#1”

答案 2 :(得分:0)

我认为我有一个优雅的解决方案,但唉,没有像我预期的那样工作。我希望(也许你可以付出更多努力)从IgnoreAttribute类派生。我认为这样可行:

[Test, BugId("411")]
public void TestMethod()
{
    // your test
}

public class BugIdAttribute : IgnoreAttribute
{
    private string id;

    public BugIdAttribute(string id) : base("Ignored because it is bug #" + id)
    {
        this.id = id;
    }
}

但它似乎还有更多。很抱歉发布一个实际上并不是答案的答案,但我认为对于那些比我更了解nunit内部的人来说,这是一个很好的垫脚石。