如何配置Teamcity忽略某些测试

Bee*_*ice 6 c# teamcity nunit unit-testing

有一种方法可以将Teamcity配置为忽略某些测试吗?我只需要在本地运行这些测试,当它们在Teamcity中运行时,必须被忽略.

我正在使用nunit.

这可能是指令,属性等.

kip*_*ney 11

您可以通过在测试中添加测试类别来完成此操作.

[Category("LocalOnly")]
[Test]
public void MyLocalTest()
{
    // Code omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以将该类别添加到TeamCity构建步骤中的NUnit运行程序的"NUnit类别排除:"字段中.

NUnit categories exclude: LocalOnly
Run Code Online (Sandbox Code Playgroud)

TeamCity NUnit忽略类别字段


Ser*_*hyk 5

TeamCity 9.1支持NUnit 3,并且它提供了许多其他可能性来选择要执行的测试或将其过滤掉。我建议使用--where=EXPRESSION允许使用测试选择语言。现在,您甚至可以使用正则表达式来指定要运行或排除的测试。

例子

您只想排除一项测试吗?

--where="method != 'TestName'"
Run Code Online (Sandbox Code Playgroud)

您只想排除一项测试吗?不记得确切的名称,但记得带有“BuggyMethod”的内容(~意味着涉及正则表达式):

--where="method !~ 'BuggyMethod'"
Run Code Online (Sandbox Code Playgroud)

运行一个类中定义的所有测试:

--where="class == 'My.Namespace.ClassName'"
Run Code Online (Sandbox Code Playgroud)

忘记完整的命名空间?这不再是问题了 - 使用正则表达式:

--where="class =~ 'ClassName'"
Run Code Online (Sandbox Code Playgroud)

您还可以组合这些表达式来达到所需的效果。运行该类的所有测试,但排除所有包含“BuggyMethod”的方法:

--where="class =~ 'ClassName' and method !~ 'BuggyMethod'"
Run Code Online (Sandbox Code Playgroud)

这种方法更加灵活,并且可以避免对代码进行任何修改。我认为不再需要使用类别,除非您的测试是使用类别进行分类的。