Delen via


Geselecteerde eenheidstests uitvoeren

Met de dotnet test opdracht in .NET Core kunt u een filterexpressie gebruiken om geselecteerde tests uit te voeren. In dit artikel wordt beschreven hoe u tests filtert. In de voorbeelden wordt gebruikgemaakt dotnet testvan . Als u gebruikt vstest.console.exe, vervangt --filter u door --testcasefilter:.

Syntaxis

dotnet test --filter <Expression>
  • De expressie heeft de indeling <Property><Operator><Value>[|&<Expression>].

    Expressies kunnen worden samengevoegd met booleaanse operators: | voor booleaanse operatoren of voor & booleaanse waarden en.

    Expressies kunnen tussen haakjes worden weergegeven. Voorbeeld: (Name~MyClass) | (Name~MyClass2).

    Een expressie zonder operator wordt geïnterpreteerd als een bevat in de FullyQualifiedName eigenschap. Is bijvoorbeeld dotnet test --filter xyz hetzelfde als dotnet test --filter FullyQualifiedName~xyz.

  • Eigenschap is een kenmerk van de Test Case. De volgende eigenschappen worden bijvoorbeeld ondersteund door populaire frameworks voor eenheidstests.

    Testframework Ondersteunde eigenschappen
    MSTest FullyQualifiedName
    Name
    ClassName
    Priority
    TestCategory
    xUnit FullyQualifiedName
    DisplayName
    Traits
    Nunit FullyQualifiedName
    Name
    Priority
    TestCategory
  • Operators

    • = exacte overeenkomst
    • !=niet exacte overeenkomst
    • ~ Bevat
    • !~ bevat geen
  • Waarde is een tekenreeks. Alle zoekacties zijn hoofdlettergevoelig.

Teken ontsnappen

Als u een uitroepteken (!) in een filterexpressie wilt gebruiken, moet u deze in sommige Linux- of macOS-shells escapen door er een backslash voor te plaatsen (\!). Met het volgende filter worden bijvoorbeeld alle tests in een naamruimte die het volgende bevat IntegrationTestsovergeslagen:

dotnet test --filter FullyQualifiedName\!~IntegrationTests

Voor FullyQualifiedName waarden die een komma bevatten voor algemene typeparameters, escapet u de komma met %2C. Voorbeeld:

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

MSTest-voorbeelden

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()
        {
        }
    }
}
Expressie Resultaat
dotnet test --filter Method Voert tests uit waarvan FullyQualifiedName de inhoud is.Method
dotnet test --filter Name~TestMethod1 Voert tests uit waarvan de naam het bevat TestMethod1.
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 Voert tests uit die zich in klasse bevinden MSTestNamespace.UnitTest1.
Opmerking: de ClassName waarde moet een naamruimte hebben, dus ClassName=UnitTest1 werkt niet.
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 Voert alle tests uit, behalve MSTestNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Voert tests uit met aantekeningen [TestCategory("CategoryA")].
dotnet test --filter Priority=2 Voert tests uit met aantekeningen [Priority(2)].

Voorbeelden met behulp van de voorwaardelijke operators | en &:

xUnit-voorbeelden

using Xunit;

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

        [Fact, Trait("Priority", "2")]
        public void Test2()
        {
        }
    }
}
Expressie Resultaat
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 Voert slechts één test uit. XUnitNamespace.TestClass1.Test1
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 Voert alle tests uit, behalve XUnitNamespace.TestClass1.Test1.
dotnet test --filter DisplayName~TestClass1 Voert tests uit waarvan de weergavenaam bevat TestClass1.

In het codevoorbeeld kunnen de gedefinieerde eigenschappen met sleutels "Category" worden gebruikt en "Priority" kunnen worden gebruikt voor het filteren.

Expressie Resultaat
dotnet test --filter XUnit Voert tests uit waarvan FullyQualifiedName de inhoud is.XUnit
dotnet test --filter Category=CategoryA Voert tests uit met [Trait("Category", "CategoryA")].

Voorbeelden met behulp van de voorwaardelijke operators | en &:

  • Om tests uit te voeren die TestClass1 hun FullyQualifiedName of een Trait sleutel van en waarde "CategoryA"hebben"Category".

    dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
    
  • Om tests uit te voeren die TestClass1 hun FullyQualifiedName hebben en een Trait met een sleutel van en waarde hebben "Category" van "CategoryA".

    dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
    
  • Als u tests wilt uitvoeren die een TestClass1 FullyQualifiedName sleutel van "Category" en Trait een waarde "CategoryA" hebben van of een Trait met een sleutel van en waarde hebben van ."Priority" 1

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

Voorbeelden van eenheid

using NUnit.Framework;

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

        [Test, Property("Priority", 2)]
        public void TestMethod2()
        {
        }
    }
}
Expressie Resultaat
dotnet test --filter Method Voert tests uit waarvan FullyQualifiedName de inhoud is.Method
dotnet test --filter Name~TestMethod1 Voert tests uit waarvan de naam het bevat TestMethod1.
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 Voert tests uit die zich in klasse bevinden NUnitNamespace.UnitTest1.
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 Voert alle tests uit, behalve NUnitNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Voert tests uit met aantekeningen [Category("CategoryA")].
dotnet test --filter Priority=2 Voert tests uit met aantekeningen [Priority(2)].

Voorbeelden met behulp van de voorwaardelijke operators | en &:

Om tests uit te voeren die UnitTest1 hun FullyQualifiedName of een of "CategoryA"meer Category hebben.

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

Om tests uit te voeren die UnitTest1 hun FullyQualifiedName hebben en een Category van "CategoryA"hebben.

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

Als u tests wilt uitvoeren die een FullyQualifiedName of meer bevatten UnitTest1 of Category "CategoryA" een met een Property "Priority" 1van hebben.

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

Zie TestCase-filter voor meer informatie.

Zie ook

Volgende stappen