87

I have a large test suite in a .NET Core project. I can use the Test Explorer window to select a few tests to run.

I can also run the whole test suite on the command line with dotnet test. Is there a way to run only one (or a few) tests on the command line?

Nate Barbettini
  • 51,256
  • 26
  • 134
  • 147

2 Answers2

114

With the dotnet version 1.0.0, you have to use the --filter option:

You can filter by DisplayName, FullyQualifiedName and Traits.

Ex:

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

Also, these operators are allowed: =, != and ~ (contains).

More info here: docs

andrecarlucci
  • 5,927
  • 7
  • 52
  • 58
  • I tried this out and this solution works also for the 1.1 version and a [Theory] decorated method. Switches `-method` and `-class` aren't available in 1.1 anymore and you'll get an error: `MSBUILD: error MSB1001: Unkown switch. Switch: -method` – Teknikaali Apr 30 '17 at 09:55
  • 1
    Yep, I just confirmed this. `-method` no longer works, but `--filter` does. Thanks @andrecarlucci! – Nate Barbettini Aug 10 '17 at 23:07
  • 6
    Since version 15.1 the expression can be a keyword that will be matched against the fully qualified names. As the documentation states "`dotnet test --filter xyz` is same as `dotnet test --filter FullyQualifiedName~xyz`" Which is much comfortable ! – VincentTellier Feb 13 '18 at 13:51
11

Since this question is tagged with xUnit, the command for the dotnet xUnit CLI command is as follows:

dotnet xunit -method FullyQualifiedName
GeorgDangl
  • 2,146
  • 1
  • 29
  • 37