在我的NUnit testfixtrues中,我有一些类似
的内容[Test,Category("catA")]
public void test1
{
//
}
[Test,Category("catB")]
public void test2
{
//
}
[Test,Category("catA")]
[Test,Category("catB")]
public void test3
{
//
}
现在在NUnit中,我希望能够选择catA和catB并运行catA 和 catB存在的测试。目前情况并非如此,NUnit将运行所有3个测试。
有没有办法将此行为更改为AND条件而不是OR?
我目前正在运行v2.5.0.9122。
提前致谢。
答案 0 :(得分:18)
基于文档,您只需说/ include:CatA + CatB
http://www.nunit.org/index.php?p=consoleCommandLine&r=2.5.1
指定要包括或排除的测试类别
NUnit提供了CategoryAttribute,用于将测试标记为属于 到一个或多个类别。可以在a中包含或排除类别 使用/ include和/ exclude选项进行测试运行。下列 command仅运行BaseLine类别中的测试:
nunit-console myassembly.dll / include:BaseLine以下命令运行除数据库类别中的测试之外的所有测试:
nunit-console myassembly.dll / exclude:数据库可以在任一选项上指定多个类别,使用逗号分隔它们。
注意:从NUnit 2.4开始,/ include和/ exclude选项可以 在命令行上组合。当两者都使用时,所有测试都用 除了那些被排除的类别之外,运行所包含的类别 类别。
从NUnit 2.4.6开始,您可以使用类别表达式 以下任一选项:
A +(B | C)选择同时具有A类和B或C的测试 逗号运算符等效于|但是有更高的优势。评估顺序是 如下:
一元排除运算符( - )高优先级联合运算符(,) 交集和集合减法运算符(+和二进制 - ) 低优先级联合运算符(|)注意:因为运算符 字符有特殊含义,你应该避免创建一个类别 在其名称中使用其中任何一个。例如,类别 “db-tests”无法在命令行上使用,因为它似乎是 表示“运行类别db,类别测试除外”。相同 限制适用于具有特殊含义的字符 你正在使用的shell。
答案 1 :(得分:15)
没有。无法仅运行属于两个或更多特定类别的测试。老实说,几年前我们第一次使用这个功能时,我从没想过这个。我们尽量保持简单。
顺便说一句,您无需在[Test]
方法上指定test3
两次。
[Test]
[Category("catA")]
[Category("catB")]
public void test3
{
//
}
并非它有所作为。这只是一种风格偏好。
答案 2 :(得分:4)
如果使用3.0版,请使用选项--where
。
例如:
nunit3-console.exe youdll.dll --where="cat==yourCat"
答案 3 :(得分:3)
从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"
答案 4 :(得分:2)
听起来你需要的是第三类“catAandB”。
答案 5 :(得分:1)
据我所知,你不能像NUnit那样选择它们。
我尝试了NUnit的许多不同的东西,以及我的测试创建方式没有成功。
我找到了一个site,它会告诉您创建自定义类别属性的过程,但仍然无法看到它可能有何帮助。
答案 6 :(得分:0)
"...nunit-console.exe" "....myassembly.dll" /include:catA+catB