首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NUnit类别的组合?

NUnit类别的组合?
EN

Stack Overflow用户
提问于 2009-07-29 11:35:51
回答 7查看 20.3K关注 0票数 23

在我的NUnit测试中,我有一些类似于

代码语言:javascript
复制
[Test,Category("catA")]
public void test1
{
    //
}

[Test,Category("catB")]
public void test2
{
    //
}

[Test,Category("catA")]
[Test,Category("catB")]
public void test3
{
    //
}

现在,在NUnit gui中,我希望能够选择catA和catB,并在catA catB存在的情况下运行测试。目前情况并非如此,NUnit将运行所有3个测试。

有没有办法将此行为更改为AND条件而不是OR条件?

我目前运行的是v2.5.0.9122。

提前谢谢。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2019-11-15 19:48:18

2019年NUnit 3.0的快速答案。可以使用多个类别。

考虑以下示例:

代码语言:javascript
复制
    [TestFixture]
    public class Tests1
    {
        [Test]
        [Category("A")]
        public void TestA()
        {
            Console.WriteLine(TestContext.CurrentContext.Test.Name);
        }

        [Test]
        [Category("B")]
        public void TestB()
        {
            Console.WriteLine(TestContext.CurrentContext.Test.Name);
        }

        [Test]
        [Category("C")]
        public void TestC()
        {
            Console.WriteLine(TestContext.CurrentContext.Test.Name);
        }

        [Test]
        [Category("A")]
        [Category("B")]
        public void TestAB()
        {
            Console.WriteLine(TestContext.CurrentContext.Test.Name);
        }

        [Test]
        [Category("A")]
        [Category("C")]
        public void TestAC()
        {
            Console.WriteLine(TestContext.CurrentContext.Test.Name);
        }

        [Test]
        [Category("B")]
        [Category("C")]
        public void TestBC()
        {
            Console.WriteLine(TestContext.CurrentContext.Test.Name);
        }

        [Test]
        [Category("A")]
        [Category("B")]
        [Category("C")]
        public void TestABC()
        {
            Console.WriteLine(TestContext.CurrentContext.Test.Name);
        }
    }

您可以使用以下命令参数运行类别为AB并排除类别C的测试:--where="cat==A && cat==B && cat!=C"

或者,您可以使用任何类别AB运行测试,但不包括C,如下所示:--where="(cat==A || cat==B) && cat!=C"

票数 7
EN

Stack Overflow用户

发布于 2013-09-27 02:36:31

根据文档,你只需要说/include:CatA+CatB

http://www.nunit.org/index.php?p=consoleCommandLine&r=2.5.1

指定要包含或排除的测试类别

NUnit提供了CategoryAttribute,用于将测试标记为属于一个或多个类别。可以使用/include和/exclude选项在测试运行中包括或排除类别。以下命令仅运行BaseLine类别中的测试:

nunit-console myassembly.dll /include:BaseLine以下命令运行除数据库类别中的测试之外的所有测试:

nunit-console myassembly.dll /exclude:Database可以在任一选项上指定多个类别,使用逗号分隔它们。

注意:从NUnit 2.4开始,可以在命令行上组合使用/include和/exclude选项。当两者都使用时,运行包含类别的所有测试,但排除类别的测试除外。

从NUnit 2.4.6开始,您可以将类别表达式与以下任一选项一起使用:

  • A | B |C选择具有任何类别A、B或C的测试。
  • A、B、C选择具有任何类别A的测试,B或C。
  • A+B+C仅选择具有指定的所有三个类别的测试
  • A+B|C选择具有A和B或类别C的测试。
  • A+B-C选择同时具有A和B但不具有C的测试。
  • -A选择不具有A类别的测试

选择同时具有类别A和B或C的测试。逗号运算符等同于|,但具有更高的优先级。评估顺序如下:

一元排除运算符(-)高优先级并集运算符(,)交集和集减运算符(+和二元-)低优先级并集运算符(|)注意:由于运算符字符具有特殊含义,因此应避免创建在其名称中使用其中任何字符的类别。例如,类别“db-test”不能在命令行上使用,因为它似乎意味着“运行类别db,但类别测试除外”。同样的限制也适用于对您正在使用的外壳程序具有特殊含义的字符。

票数 20
EN

Stack Overflow用户

发布于 2010-03-19 02:21:21

不是的。没有办法只运行属于两个或更多特定类别的测试。老实说,几年前当我们第一次加入这个功能时,我从来没有想过这一点。我们试着让它尽可能简单。

顺便说一句,您不需要在test3方法上两次指定[Test]

代码语言:javascript
复制
[Test]
[Category("catA")]
[Category("catB")]
public void test3
{
    //
}

这并不是说这有什么不同。这只是一种风格偏好。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1199611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档