Ausführen von selektiven KomponententestsRunning 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 test 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:.

MSTestMSTest

using Microsoft.VisualStudio.TestTools.UnitTesting;

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

        [Priority(2)]
        [TestMethod]
        public void TestMethod2()
        {
        }
    }
}
AusdruckExpression ErgebnisResult
dotnet test --filter Method Führt Tests aus, dessen FullyQualifiedName Method 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 which 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")] kommentiert sind.Runs tests which are annotated with [TestCategory("CategoryA")].
dotnet test --filter Priority=2 Führt Tests aus, die mit [Priority(2)] kommentiert sind.Runs tests which are annotated with [Priority(2)].

Verwenden bedingter Operatoren | und&Using conditional operators | and &

AusdruckExpression ErgebnisResult
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA" Führt Tests aus, die UnitTest1 in FullyQualifiedName besitzen, oder TestCategory ist CategoryA.Runs tests which have UnitTest1 in FullyQualifiedName or TestCategory is CategoryA.
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA" Führt Tests aus, die UnitTest1 in FullyQualifiedName besitzen, und TestCategory ist CategoryA.Runs tests which have UnitTest1 in FullyQualifiedName and TestCategory is CategoryA.
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1" Führt Tests aus, in denen FullyQualifiedName entweder UnitTest1 enthalten ist, und TestCategory ist CategoryA, oder Priority ist 1.Runs tests which have either FullyQualifiedName containing UnitTest1 and TestCategory is CategoryA or Priority is 1.

xUnitxUnit

using Xunit;

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

        [Trait("Priority", "2")]
        [Fact]
        public void Test2()
        {
        }
    }
}
AusdruckExpression 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.

AusdruckExpression ErgebnisResult
dotnet test --filter XUnit Führt Tests aus, dessen FullyQualifiedName XUnit 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")] besitzen.Runs tests which have [Trait("Category", "CategoryA")].

Verwenden bedingter Operatoren | und&Using conditional operators | and &

AusdruckExpression ErgebnisResult
dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA" Führt Tests aus, die TestClass1 in FullyQualifiedName besitzen, oder Category ist CategoryA.Runs tests which has TestClass1 in FullyQualifiedName or Category is CategoryA.
dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA" Führt Tests aus, die TestClass1 in FullyQualifiedName besitzen, und Category ist CategoryA.Runs tests which has TestClass1 in FullyQualifiedName and Category is CategoryA.
dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1" Führt Tests aus, in denen FullyQualifiedName entweder TestClass1 enthalten ist, und Category ist CategoryA, oder Priority ist 1.Runs tests which have either FullyQualifiedName containing TestClass1 and Category is CategoryA or Priority is 1.

NUnitNUnit

using NUnit.Framework;

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

        [Property("Priority", 2)]
        [Test]
        public void TestMethod2()
        {
        }
    }
}
AusdruckExpression ErgebnisResult
dotnet test --filter Method Führt Tests aus, dessen FullyQualifiedName Method 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 which 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")] kommentiert sind.Runs tests which are annotated with [Category("CategoryA")].
dotnet test --filter Priority=2 Führt Tests aus, die mit [Priority(2)] kommentiert sind.Runs tests which are annotated with [Priority(2)].

Verwenden bedingter Operatoren | und&Using conditional operators | and &

AusdruckExpression ErgebnisResult
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA" Führt Tests aus, die UnitTest1 in FullyQualifiedName besitzen, oder TestCategory ist CategoryA.Runs tests which have UnitTest1 in FullyQualifiedName or TestCategory is CategoryA.
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA" Führt Tests aus, die UnitTest1 in FullyQualifiedName besitzen, und TestCategory ist CategoryA.Runs tests which have UnitTest1 in FullyQualifiedName and TestCategory is CategoryA.
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1" Führt Tests aus, in denen FullyQualifiedName entweder UnitTest1 enthalten ist, und TestCategory ist CategoryA, oder Priority ist 1.Runs tests which have either FullyQualifiedName containing UnitTest1 and TestCategory is CategoryA or Priority is 1.