2016-06-10 108 views
16

我在.NET Core项目中有一个很大的测试套件。我可以使用测试浏览器窗口来选择一些测试来运行。如何使用dotnet测试运行特定测试?

我也可以使用dotnet test在命令行上运行整个测试套件。有没有办法在命令行上只运行一个(或几个)测试?

回答

20

随着DOTNET版本1.0.0,您必须使用--filter选项:

您可以通过显示名称,FullyQualifiedName和特点进行筛选。

例:

dotnet test --filter "FullyQualifiedName=YourNamespace.TestClass1.Test1" 

此外,这些运营商被允许:!=,=和〜(含)。

此处了解详情:docs

+0

我尝试了这一点,该解决方案也适用于1.1版本和[Theory]装饰方法。开关'-method'和'-class'在1.1中不可用,你会得到一个错误:'MSBUILD:错误MSB1001:未知开关。开关:-method' – Teknikaali

+1

是的,我刚刚证实了这一点。 '-method'不再有效,但'--filter'确实。谢谢@andrecarlucci! –

+0

从版本15.1开始,表达式可以是一个与完全限定名称匹配的关键字。正如文档所述“'dotnet test --filter xyz'与'dotnet test --filter FullyQualifiedName〜xyz'相同”这很舒服! – vtellier

11

这个答案已经过时......

这是特定的xUnit: dotnet test -method <test name>

<test name>是完整的方法名(命名空间+类+方法名)

如果你的测试是 Theory ,AFAIK,没有办法指定运行哪个理论。它会运行所有这些。

+0

谢谢!这是记录在任何地方? –

+0

我认为它应该在xunit文档中的某个地方https://xunit.github.io/#documentation –

+0

这可能是在过去的几周内发生了变化;你现在可以用相同的方式来测试一个理论。 – kiml42

4

因为这个问题被打上的xUnit,对于DOTNET命令的xUnit CLI命令如下:

dotnet xunit -method FullyQualifiedName 
相关问题