Köra valda enhetstester

dotnet test Med kommandot i .NET Core kan du använda ett filteruttryck för att köra valda tester. Den här artikeln visar hur du filtrerar tester. Exemplen använder dotnet test. Om du använder ersätter vstest.console.exe--filter du med --testcasefilter:.

Syntax

dotnet test --filter <Expression>
  • Uttrycket är i formatet <Property><Operator><Value>[|&<Expression>].

    Uttryck kan kopplas med booleska operatorer: | för booleska eller& booleska och.

    Uttryck kan omges av parenteser. Exempel: (Name~MyClass) | (Name~MyClass2).

    Ett uttryck utan operator tolkas som en containsFullyQualifiedName egenskapen. Är till exempel dotnet test --filter xyz samma som dotnet test --filter FullyQualifiedName~xyz.

  • Egenskapen är ett attribut för Test Case. Följande egenskaper stöds till exempel av populära enhetstestramverk.

    Testramverk Egenskaper som stöds
    MSTest FullyQualifiedName
    Name
    ClassName
    Priority
    TestCategory
    xUnit FullyQualifiedName
    DisplayName
    Traits
    Nunit FullyQualifiedName
    Name
    Priority
    TestCategory
  • Operatorer

    • = exakt matchning
    • !=inte exakt matchning
    • ~ Innehåller
    • !~ innehåller inte
  • Värdet är en sträng. Alla sökningar är skiftlägesokänsliga.

Tecken som flyr

Om du vill använda ett utropstecken (!) i ett filteruttryck måste du undvika det i vissa Linux- eller macOS-gränssnitt genom att placera ett omvänt snedstreck framför det (\!). Följande filter hoppar till exempel över alla tester i ett namnområde som innehåller IntegrationTests:

dotnet test --filter FullyQualifiedName\!~IntegrationTests

För FullyQualifiedName värden som innehåller ett kommatecken för generiska typparametrar slipper du kommatecknet med %2C. Till exempel:

dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"

MSTest-exempel

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace MSTestNamespace
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod, Priority(1), TestCategory("CategoryA")]
        public void TestMethod1()
        {
        }

        [TestMethod, Priority(2)]
        public void TestMethod2()
        {
        }
    }
}
Uttryck Result
dotnet test --filter Method Kör tester vars FullyQualifiedName innehåller Method.
dotnet test --filter Name~TestMethod1 Kör tester vars namn innehåller TestMethod1.
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 Kör tester som finns i klassen MSTestNamespace.UnitTest1.
Obs! Värdet ClassName ska ha ett namnområde, så ClassName=UnitTest1 det fungerar inte.
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 Kör alla tester utom MSTestNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Kör tester som kommenteras med [TestCategory("CategoryA")].
dotnet test --filter Priority=2 Kör tester som kommenteras med [Priority(2)].

Exempel som använder villkorsoperatorerna | och &:

xUnit-exempel

using Xunit;

namespace XUnitNamespace
{
    public class TestClass1
    {
        [Fact, Trait("Priority", "1"), Trait("Category", "CategoryA")]
        public void Test1()
        {
        }

        [Fact, Trait("Priority", "2")]
        public void Test2()
        {
        }
    }
}
Uttryck Result
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 Kör bara ett test, XUnitNamespace.TestClass1.Test1.
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 Kör alla tester utom XUnitNamespace.TestClass1.Test1.
dotnet test --filter DisplayName~TestClass1 Kör tester vars visningsnamn innehåller TestClass1.

I kodexemplet kan de definierade egenskaperna med nycklar "Category" och "Priority" användas för filtrering.

Uttryck Result
dotnet test --filter XUnit Kör tester vars FullyQualifiedName innehåller XUnit.
dotnet test --filter Category=CategoryA Kör tester som har [Trait("Category", "CategoryA")].

Exempel som använder villkorsoperatorerna | och &:

  • Så här kör du tester som har TestClass1 i eller FullyQualifiedName har en Trait med nyckeln "Category" och värdet ."CategoryA"

    dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
    
  • Så här kör du tester som har TestClass1 i och FullyQualifiedName har en Trait med nyckeln "Category" och värdet ."CategoryA"

    dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
    
  • För att köra tester som antingen FullyQualifiedName innehåller TestClass1 och har en Trait med nyckeln "Category" och värdet "CategoryA" för eller har en Trait med nyckeln "Priority" och värdet 1.

    dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1"
    

NUnit-exempel

using NUnit.Framework;

namespace NUnitNamespace
{
    public class UnitTest1
    {
        [Test, Property("Priority", 1), Category("CategoryA")]
        public void TestMethod1()
        {
        }

        [Test, Property("Priority", 2)]
        public void TestMethod2()
        {
        }
    }
}
Uttryck Result
dotnet test --filter Method Kör tester vars FullyQualifiedName innehåller Method.
dotnet test --filter Name~TestMethod1 Kör tester vars namn innehåller TestMethod1.
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 Kör tester som finns i klassen NUnitNamespace.UnitTest1.
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 Kör alla tester utom NUnitNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Kör tester som kommenteras med [Category("CategoryA")].
dotnet test --filter Priority=2 Kör tester som kommenteras med [Priority(2)].

Exempel som använder villkorsoperatorerna | och &:

För att köra tester som har UnitTest1 i eller FullyQualifiedName har en Category av "CategoryA".

dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Att köra tester som har UnitTest1 i och FullyQualifiedName har en Category av ."CategoryA"

dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"

För att köra tester som antingen FullyQualifiedName UnitTest1 innehåller och har en Category av "CategoryA" eller har en Property med en "Priority" av .1

dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"

Mer information finns i TestCase-filtret.

Se även

Nästa steg