Spuštění vybraných testů jednotek

dotnet test Pomocí příkazu v .NET Core můžete použít výraz filtru ke spuštění vybraných testů. Tento článek ukazuje, jak filtrovat testy. V příkladech se používá dotnet test. Pokud používáte vstest.console.exe, nahraďte za --filter--testcasefilter:.

Syntax

dotnet test --filter <Expression>
  • Výraz je ve formátu <Property><Operator><Value>[|&<Expression>].

    Výrazy je možné spojit pomocí logických operátorů: | pro boolean nebo, & pro boolean a.

    Výrazy mohou být uzavřeny v závorkách. Příklad: (Name~MyClass) | (Name~MyClass2).

    Výraz bez jakéhokoli operátoru je interpretován jako contains ve FullyQualifiedName vlastnosti . Například trasa dotnet test --filter xyz je stejná jako dotnet test --filter FullyQualifiedName~xyz.

  • Vlastnost je atribut .Test Case Oblíbené architektury testování jednotek podporují například následující vlastnosti.

    Testovací architektura Podporované vlastnosti
    MSTest FullyQualifiedName
    Name
    ClassName
    Priority
    TestCategory
    xUnit FullyQualifiedName
    DisplayName
    Traits
    Nunit FullyQualifiedName
    Name
    Priority
    TestCategory
  • Operátory

    • = přesná shoda
    • !=není přesná shoda
    • ~ Obsahuje
    • !~ neobsahuje
  • Hodnota je řetězec. Všechna vyhledávání nerozlišují malá a velká písmena.

Unikající znak

Pokud chcete ve výrazu filtru použít vykřičník (!), musíte ho v některých prostředích Linuxu nebo macOS uvozit tak, že před něj umístíte zpětné lomítko (\!). Například následující filtr přeskočí všechny testy v oboru názvů, který obsahuje IntegrationTests:

dotnet test --filter FullyQualifiedName\!~IntegrationTests

U FullyQualifiedName hodnot, které obsahují čárku pro parametry obecného typu, použijte k řídicímu znaku čárku .%2C Příklad:

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

Příklady MSTest

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()
        {
        }
    }
}
Výraz Výsledek
dotnet test --filter Method Spustí testy, které FullyQualifiedName obsahují Method.
dotnet test --filter Name~TestMethod1 Spustí testy, jejichž název obsahuje TestMethod1.
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 Spustí testy, které jsou ve třídě MSTestNamespace.UnitTest1.
Poznámka: Hodnota ClassName by měla mít obor názvů, takže ClassName=UnitTest1 nebude fungovat.
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 Spustí všechny testy kromě MSTestNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Spustí testy, které jsou anotovány pomocí [TestCategory("CategoryA")].
dotnet test --filter Priority=2 Spustí testy, které jsou anotovány pomocí [Priority(2)].

Příklady použití podmíněných operátorů | a &:

Příklady xUnit

using Xunit;

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

        [Fact, Trait("Priority", "2")]
        public void Test2()
        {
        }
    }
}
Výraz Výsledek
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 Spustí pouze jeden test, XUnitNamespace.TestClass1.Test1.
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 Spustí všechny testy kromě XUnitNamespace.TestClass1.Test1.
dotnet test --filter DisplayName~TestClass1 Spustí testy, jejichž zobrazovaný název obsahuje TestClass1.

V příkladu kódu je možné pro filtrování použít definované vlastnosti s klíči "Category" a "Priority" .

Výraz Výsledek
dotnet test --filter XUnit Spustí testy, které FullyQualifiedName obsahují XUnit.
dotnet test --filter Category=CategoryA Spustí testy, které mají [Trait("Category", "CategoryA")].

Příklady použití podmíněných operátorů | a &:

  • Spuštění testů, které mají TestClass1 ve svém FullyQualifiedNamesouboru nebo mají Trait klíč "Category" a hodnotu "CategoryA".

    dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
    
  • Spuštění testů, které mají TestClass1 v FullyQualifiedNamesouboru a mají Trait klíč "Category" a hodnotu "CategoryA".

    dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
    
  • Spuštění testů, které obsahují FullyQualifiedNameTestClass1klíč aTrait mají klíč "Category" a hodnotu "CategoryA", nebo s Trait klíčem "Priority" a hodnotou 1.

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

NUnit examples

using NUnit.Framework;

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

        [Test, Property("Priority", 2)]
        public void TestMethod2()
        {
        }
    }
}
Výraz Výsledek
dotnet test --filter Method Spustí testy, které FullyQualifiedName obsahují Method.
dotnet test --filter Name~TestMethod1 Spustí testy, jejichž název obsahuje TestMethod1.
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 Spustí testy, které jsou ve třídě NUnitNamespace.UnitTest1.
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 Spustí všechny testy kromě NUnitNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Spustí testy, které jsou anotovány pomocí [Category("CategoryA")].
dotnet test --filter Priority=2 Spustí testy, které jsou anotovány pomocí [Priority(2)].

Příklady použití podmíněných operátorů | a &:

Spuštění testů, které mají UnitTest1 ve svém FullyQualifiedNamesouboru nebo mají Category ."CategoryA"

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

Chcete-li spustit testy, které mají UnitTest1 v FullyQualifiedNamesouboru a mají Category ."CategoryA"

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

Spuštění testů, které obsahují FullyQualifiedNameUnitTest1a mají Category"CategoryA"nebo majíProperty s "Priority"1.

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

Další informace najdete v tématu Filtr testovacího případu.

Viz také

Další kroky