Ausführen selektiver KomponententestsRun selective unit tests

Mit dem Befehl dotnet test in .NET Core können Sie einen Filterausdruck zum Ausführen selektiver Tests verwenden.With the dotnet test command in .NET Core, you can use a filter expression to run selective tests. In diesem Artikel wird gezeigt, wie Sie die auszuführenden Tests filtern.This article demonstrates how to filter which tests are run. Die folgenden Beispiele verwenden dotnet test.The following examples use dotnet test. Wenn Sie vstest.console.exe verwenden, ersetzen Sie --filter mit --testcasefilter:.If you're using vstest.console.exe, replace --filter with --testcasefilter:.

EscapezeichenCharacter escaping

Die Verwendung von Filtern, die in *nix ein Ausrufezeichen ! enthalten, erfordert Escapezeichen, da ! reserviert ist.Using filters that include exclamation mark ! on *nix requires escaping since ! is reserved. Dieser Filter überspringt beispielsweise alle Tests, wenn der Namespace IntegrationTests enthält:For example, this filter skips all tests if the namespace contains IntegrationTests:

dotnet test --filter FullyQualifiedName\!~IntegrationTests

Wichtig

Der umgekehrte Schrägstrich ist dem Ausrufezeichen vorangestellt, um anzugeben, dass es sich um ein Escapezeichen \! handelt.The backslash precedes the exclamation mark to indicate it is an escaped character \!.

Für FullyQualifiedName-Werte, die ein Komma für generische Typparameter enthalten, versehen Sie das Komma mit dem Escapezeichen %2C.For FullyQualifiedName values that include a comma for generic type parameters, escape the comma with %2C. Zum Beispiel:For example:

dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
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()
        {
        }
    }
}
expressionExpression ErgebnisResult
dotnet test --filter Method Führt Tests aus, dessen FullyQualifiedNameMethod enthält.Runs tests whose FullyQualifiedName contains Method. Verfügbar in vstest 15.1+.Available in vstest 15.1+.
dotnet test --filter Name~TestMethod1 Führt Tests aus, dessen Name TestMethod1 enthält.Runs tests whose name contains TestMethod1.
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 Führt Tests aus, die sich in der Klasse MSTestNamespace.UnitTest1 befinden.Runs tests that are in class MSTestNamespace.UnitTest1.
Hinweis: Der Wert ClassName muss einen Namespace besitzen, damit ClassName=UnitTest1 nicht funktioniert.Note: The ClassName value should have a namespace, so ClassName=UnitTest1 won't work.
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 Führt alle Tests außer MSTestNamespace.UnitTest1.TestMethod1 aus.Runs all tests except MSTestNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Führt Tests aus, die mit [TestCategory("CategoryA")] annotiert sind.Runs tests that are annotated with [TestCategory("CategoryA")].
dotnet test --filter Priority=2 Führt Tests aus, die mit [Priority(2)] annotiert sind.Runs tests that are annotated with [Priority(2)].

Beispiele für die Verwendung der bedingten Operatoren | und &:Examples using the conditional operators | and &:

Zum Ausführen von Tests, bei denen UnitTest1 in FullyQualifiedName enthalten oder TestCategoryAttribute "CategoryA" ist.To run tests that have UnitTest1 in their FullyQualifiedName or TestCategoryAttribute is "CategoryA".

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

Zum Ausführen von Tests, bei denen UnitTest1 in FullyQualifiedName enthalten und TestCategoryAttribute "CategoryA" ist.To run tests that have UnitTest1 in their FullyQualifiedName and have a TestCategoryAttribute of "CategoryA".

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

Zum Ausführen von Tests, bei denen entweder FullyQualifiedName UnitTest1 enthält und TestCategoryAttribute "CategoryA" ist oder PriorityAttribute die Priorität 1 hat.To run tests that have either FullyQualifiedName containing UnitTest1 and have a TestCategoryAttribute of "CategoryA" or have a PriorityAttribute with a priority of 1.

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

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

        [Fact, Trait("Priority", "2")]
        public void Test2()
        {
        }
    }
}
expressionExpression ErgebnisResult
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 Führt einen Test, XUnitNamespace.TestClass1.Test1, aus.Runs only one test, XUnitNamespace.TestClass1.Test1.
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 Führt alle Tests außer XUnitNamespace.TestClass1.Test1 aus.Runs all tests except XUnitNamespace.TestClass1.Test1.
dotnet test --filter DisplayName~TestClass1 Führt Tests aus, dessen Anzeigename TestClass1 enthält.Runs tests whose display name contains TestClass1.

Im Codebeispiel können die definierten Merkmale mit den Schlüsseln "Category" und "Priority" zum Filtern verwendet werden.In the code example, the defined traits with keys "Category" and "Priority" can be used for filtering.

expressionExpression ErgebnisResult
dotnet test --filter XUnit Führt Tests aus, dessen FullyQualifiedNameXUnit enthält.Runs tests whose FullyQualifiedName contains XUnit. Verfügbar in vstest 15.1+.Available in vstest 15.1+.
dotnet test --filter Category=CategoryA Führt Tests aus, die [Trait("Category", "CategoryA")] enthalten.Runs tests that have [Trait("Category", "CategoryA")].

Beispiele für die Verwendung der bedingten Operatoren | und &:Examples using the conditional operators | and &:

Zum Ausführen von Tests, bei denen TestClass1 ihren FullyQualifiedName enthält oder die über einen Trait mit dem Schlüssel "Category" und dem Wert "CategoryA" verfügen.To run tests that have TestClass1 in their FullyQualifiedName or have a Trait with a key of "Category" and value of "CategoryA".

dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"

Zum Ausführen von Tests, bei denen TestClass1 ihren FullyQualifiedName enthält und die über einen Trait mit dem Schlüssel "Category" und dem Wert "CategoryA" verfügen.To run tests that have TestClass1 in their FullyQualifiedName and have a Trait with a key of "Category" and value of "CategoryA".

dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"

Zum Ausführen von Tests, bei denen entweder FullyQualifiedName TestClass1 enthält und die über einen Trait mit dem Schlüssel "Category" und dem Wert "CategoryA" verfügen oder die über einen Trait mit dem Schlüssel "Priority" und dem Wert 1 verfügen.To run tests that have either FullyQualifiedName containing TestClass1 and have a Trait with a key of "Category" and value of "CategoryA" or have a Trait with a key of "Priority" and value of 1.

dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1"
using NUnit.Framework;

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

        [Test, Property("Priority", 2)]
        public void TestMethod2()
        {
        }
    }
}
expressionExpression ErgebnisResult
dotnet test --filter Method Führt Tests aus, dessen FullyQualifiedNameMethod enthält.Runs tests whose FullyQualifiedName contains Method. Verfügbar in vstest 15.1+.Available in vstest 15.1+.
dotnet test --filter Name~TestMethod1 Führt Tests aus, dessen Name TestMethod1 enthält.Runs tests whose name contains TestMethod1.
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 Führt Tests aus, die sich in der Klasse NUnitNamespace.UnitTest1 befinden.Runs tests that are in class NUnitNamespace.UnitTest1.
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 Führt alle Tests außer NUnitNamespace.UnitTest1.TestMethod1 aus.Runs all tests except NUnitNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Führt Tests aus, die mit [Category("CategoryA")] annotiert sind.Runs tests that are annotated with [Category("CategoryA")].
dotnet test --filter Priority=2 Führt Tests aus, die mit [Priority(2)] annotiert sind.Runs tests that are annotated with [Priority(2)].

Beispiele für die Verwendung der bedingten Operatoren | und &:Examples using the conditional operators | and &:

Zum Ausführen von Tests, bei denen UnitTest1 in FullyQualifiedName enthalten oder Category "CategoryA" ist.To run tests that have UnitTest1 in their FullyQualifiedName or have a Category of "CategoryA".

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

Zum Ausführen von Tests, bei denen UnitTest1 in FullyQualifiedName enthalten und Category "CategoryA" ist.To run tests that have UnitTest1 in their FullyQualifiedName and have a Category of "CategoryA".

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

Zum Ausführen von Tests, bei denen entweder FullyQualifiedName UnitTest1 enthält und Category "CategoryA" ist oder Property die "Priority" 1hat.To run tests that have either a FullyQualifiedName containing UnitTest1 and have a Category of "CategoryA" or have a Property with a "Priority" of 1.

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

Weitere Informationen finden Sie unter TestCase-Filter.For more information, see TestCase filter.

Siehe auchSee also

Nächste SchritteNext steps