Ausführen ausgewählter Komponententests

Mit dem Befehl dotnet test in .NET Core können Sie einen Filterausdruck zum Ausführen ausgewählter Tests verwenden. In diesem Artikel wird veranschaulicht, wie Sie Tests filtern. Die Beispiele verwenden dotnet test. Wenn Sie vstest.console.exe verwenden, ersetzen Sie --filter mit --testcasefilter:.

Syntax

dotnet test --filter <Expression>
  • Der Ausdruck weist das Format <Property><Operator><Value>[|&<Expression>] auf.

    Ausdrücke können mit booleschen Operatoren verknüpft werden: | für boolesches or, & für boolesches and.

    Ausdrücke können in Klammern eingeschlossen werden. Beispiel: (Name~MyClass) | (Name~MyClass2).

    Ein Ausdruck ohne Operator wird als contains für die Eigenschaft FullyQualifiedName interpretiert. dotnet test --filter xyz entspricht beispielsweise dotnet test --filter FullyQualifiedName~xyz.

  • Die Eigenschaft ist ein Attribut von Test Case. Beispielsweise werden die folgenden Eigenschaften von gängigen Komponententestframeworks unterstützt.

    Testframework Unterstützte Eigenschaften
    MSTest FullyQualifiedName
    Name
    ClassName
    Priority
    TestCategory
    xUnit FullyQualifiedName
    DisplayName
    Traits
    NUnit FullyQualifiedName
    Name
    Priority
    TestCategory
  • Operatoren

    • =: genaue Übereinstimmung
    • !=: keine genaue Übereinstimmung
    • ~: enthält
    • !~: enthält nicht
  • Der Wert ist eine Zeichenfolge. Bei allen Suchvorgängen ist die Groß-/Kleinschreibung nicht relevant.

Escapezeichen

Um ein Ausrufezeichen () in einem Filterausdruck zu verwenden, müssen Sie es in einigen Linux- oder macOS Shells escapen, indem Sie einen umgekehrten Schrägstrich davor\! (!) setzen. Der folgende Filter überspringt beispielsweise alle Tests in einem Namespace, der IntegrationTests enthält:

dotnet test --filter FullyQualifiedName\!~IntegrationTests

Für FullyQualifiedName-Werte, die ein Komma für generische Typparameter enthalten, versehen Sie das Komma mit dem Escapezeichen %2C. Zum Beispiel:

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

MSTest-Beispiele

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()
        {
        }
    }
}
expression Ergebnis
dotnet test --filter Method Führt Tests aus, dessen FullyQualifiedNameMethod enthält.
dotnet test --filter Name~TestMethod1 Führt Tests aus, dessen Name TestMethod1 enthält.
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 Führt Tests aus, die sich in der Klasse MSTestNamespace.UnitTest1 befinden.
Hinweis: Der Wert ClassName muss einen Namespace besitzen, damit ClassName=UnitTest1 nicht funktioniert.
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 Führt alle Tests außer MSTestNamespace.UnitTest1.TestMethod1 aus.
dotnet test --filter TestCategory=CategoryA Führt Tests aus, die mit [TestCategory("CategoryA")] annotiert sind.
dotnet test --filter Priority=2 Führt Tests aus, die mit [Priority(2)] annotiert sind.

Beispiele für die Verwendung der bedingten Operatoren | und &:

xUnit-Beispiele

using Xunit;

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

        [Fact, Trait("Priority", "2")]
        public void Test2()
        {
        }
    }
}
expression Ergebnis
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 Führt einen Test, XUnitNamespace.TestClass1.Test1, aus.
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 Führt alle Tests außer XUnitNamespace.TestClass1.Test1 aus.
dotnet test --filter DisplayName~TestClass1 Führt Tests aus, dessen Anzeigename TestClass1 enthält.

Im Codebeispiel können die definierten Merkmale mit den Schlüsseln "Category" und "Priority" zum Filtern verwendet werden.

expression Ergebnis
dotnet test --filter XUnit Führt Tests aus, dessen FullyQualifiedNameXUnit enthält.
dotnet test --filter Category=CategoryA Führt Tests aus, die [Trait("Category", "CategoryA")] enthalten.

Beispiele für die Verwendung der bedingten Operatoren | und &:

  • So führen Sie Tests aus, die TestClass1 in ihrer FullyQualifiedNameDatei enthalten sind oder einen Trait Schlüssel "Category" mit dem Wert "CategoryA"haben.

    dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
    
  • Führen Sie Tests aus, die TestClass1 in deren FullyQualifiedName Eigenschaften enthalten sind und einen Trait Schlüssel mit "Category" dem Wert "CategoryA"haben.

    dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
    
  • Führen Sie Tests aus, die entweder FullyQualifiedName einen Schlüssel "Category" und einen Wert "CategoryA"enthaltenTraitTestClass1 oder einen Schlüssel mit einem Schlüssel und wert haben oder einen Trait Schlüssel mit "Priority" dem Wert 1haben.

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

NUnit-Beispiele

using NUnit.Framework;

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

        [Test, Property("Priority", 2)]
        public void TestMethod2()
        {
        }
    }
}
expression Ergebnis
dotnet test --filter Method Führt Tests aus, dessen FullyQualifiedNameMethod enthält.
dotnet test --filter Name~TestMethod1 Führt Tests aus, dessen Name TestMethod1 enthält.
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 Führt Tests aus, die sich in der Klasse NUnitNamespace.UnitTest1 befinden.
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 Führt alle Tests außer NUnitNamespace.UnitTest1.TestMethod1 aus.
dotnet test --filter TestCategory=CategoryA Führt Tests aus, die mit [Category("CategoryA")] annotiert sind.
dotnet test --filter Priority=2 Führt Tests aus, die mit [Priority(2)] annotiert sind.

Beispiele für die Verwendung der bedingten Operatoren | und &:

So führen Sie Tests aus, die UnitTest1in ihremFullyQualifiedName Oder über eine von "CategoryA".Category

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

So führen Sie Tests aus, die UnitTest1 sich in ihrem FullyQualifiedName und einem von "CategoryA"ihnen Categorybefindet.

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

Führen Sie Tests aus, die entweder eine FullyQualifiedNameenthaltendeUnitTest1und eine Category"CategoryA" von oder eine mit einer "Priority"Property von 1haben.

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

Weitere Informationen finden Sie unter TestCase-Filter.

Siehe auch

Nächste Schritte