在我的NUnit测试中,我有一些类似于
[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。
提前谢谢。
发布于 2019-11-15 19:48:18
2019年NUnit 3.0的快速答案。可以使用多个类别。
考虑以下示例:
[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);
}
}
您可以使用以下命令参数运行类别为A
和B
并排除类别C
的测试:--where="cat==A && cat==B && cat!=C"
或者,您可以使用任何类别A
和B
运行测试,但不包括C
,如下所示:--where="(cat==A || cat==B) && cat!=C"
发布于 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的测试。逗号运算符等同于|,但具有更高的优先级。评估顺序如下:
一元排除运算符(-)高优先级并集运算符(,)交集和集减运算符(+和二元-)低优先级并集运算符(|)注意:由于运算符字符具有特殊含义,因此应避免创建在其名称中使用其中任何字符的类别。例如,类别“db-test”不能在命令行上使用,因为它似乎意味着“运行类别db,但类别测试除外”。同样的限制也适用于对您正在使用的外壳程序具有特殊含义的字符。
发布于 2010-03-19 02:21:21
不是的。没有办法只运行属于两个或更多特定类别的测试。老实说,几年前当我们第一次加入这个功能时,我从来没有想过这一点。我们试着让它尽可能简单。
顺便说一句,您不需要在test3
方法上两次指定[Test]
。
[Test]
[Category("catA")]
[Category("catB")]
public void test3
{
//
}
这并不是说这有什么不同。这只是一种风格偏好。
https://stackoverflow.com/questions/1199611
复制相似问题