Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
FullyQualifiedNameeigenschap. Is bijvoorbeelddotnet test --filter xyzhetzelfde alsdotnet 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 FullyQualifiedNameNameClassNamePriorityTestCategoryxUnit FullyQualifiedNameDisplayNameTraitsNunit FullyQualifiedNameNamePriorityTestCategoryOperators
- 
              
=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"
Gebruik voor Name of DisplayNamede URL-codering voor de speciale tekens. Als u bijvoorbeeld een test wilt uitvoeren met de naam MyTestMethod en een tekenreekswaarde "text", gebruikt u het volgende filter:
dotnet test --filter "Name=MyTestMethod \(%22text%22\)"
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 &:
Om tests uit te voeren die
UnitTest1hun FullyQualifiedNameofTestCategoryAttribute dat wel of niet zijn"CategoryA".dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"Om tests uit te voeren die
UnitTest1hun FullyQualifiedNamehebben en een TestCategoryAttribute van"CategoryA"hebben.dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"Om tests uit te voeren die FullyQualifiedName
UnitTest1een of meer"CategoryA"of een met een prioriteit PriorityAttributehebben.1dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
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
TestClass1hun FullyQualifiedNameof eenTraitsleutel van en waarde"Category"hebben"CategoryA".dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"Om tests uit te voeren die
TestClass1hun FullyQualifiedNamehebben en eenTraitmet een sleutel van en waarde hebben"Category"van"CategoryA".dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"Als u tests wilt uitvoeren die een FullyQualifiedName
TestClass1"Category"een waarde"CategoryA"hebben van of eenTraitmet een sleutel van en waarde hebben van ."Priority"1dotnet 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 FullyQualifiedNameof een of Categorymeer "CategoryA" hebben.
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Om tests uit te voeren die UnitTest1 hun FullyQualifiedNamehebben 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"CategoryA" een met een Property"Priority"1van hebben.
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Zie TestCase-filter voor meer informatie.