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

dotnet test Pomocí příkazu v .NET Core můžete pomocí výrazu filtru spouštět vybrané testy. Tento článek ukazuje, jak filtrovat testy. Příklady používají dotnet test. Pokud používáte vstest.console.exe, nahraďte --filter ho .--testcasefilter:

Syntaxe

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

    Výrazy lze spojit s logickými operátory: | pro logickou hodnotu nebo pro & logickou hodnotu a.

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

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

  • Vlastnost je atribut .Test Case Například následující vlastnosti jsou podporovány oblíbenými architekturami testů jednotek.

    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.

Zapouzdření znaků

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

dotnet test --filter FullyQualifiedName\!~IntegrationTests

Pro FullyQualifiedName hodnoty, které obsahují čárku pro parametry obecného typu, uchytáte čárku s %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 Spouští testy, jejichž FullyQualifiedName obsahuje Method.
dotnet test --filter Name~TestMethod1 Spustí testy, jejichž název obsahuje TestMethod1.
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 Spouští 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 s výjimkou MSTestNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Spustí testy, které jsou opatřeny poznámkami [TestCategory("CategoryA")].
dotnet test --filter Priority=2 Spustí testy, které jsou opatřeny poznámkami [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 s výjimkou XUnitNamespace.TestClass1.Test1.
dotnet test --filter DisplayName~TestClass1 Spustí testy, jejichž zobrazovaný název obsahuje TestClass1.

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

Výraz Výsledek
dotnet test --filter XUnit Spouští testy, jejichž FullyQualifiedName obsahuje XUnit.
dotnet test --filter Category=CategoryA Spustí testy, které mají [Trait("Category", "CategoryA")].

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

  • Ke spuštění testů, které mají TestClass1 v jejich FullyQualifiedName nebo mají Trait klíč "Category" a hodnotu "CategoryA".

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

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

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

Příklady NUnit

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 Spouští testy, jejichž FullyQualifiedName obsahuje Method.
dotnet test --filter Name~TestMethod1 Spustí testy, jejichž název obsahuje TestMethod1.
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 Spouští testy, které jsou ve třídě NUnitNamespace.UnitTest1.
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 Spustí všechny testy s výjimkou NUnitNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Spustí testy, které jsou opatřeny poznámkami [Category("CategoryA")].
dotnet test --filter Priority=2 Spustí testy, které jsou opatřeny poznámkami [Priority(2)].

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

Ke spuštění testů, které mají UnitTest1 nebo FullyQualifiedName mají Category "CategoryA"

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

Ke spuštění testů, které mají UnitTest1 v jejich FullyQualifiedName a mají Category "CategoryA"

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

Ke spouštění testů, které mají FullyQualifiedName buď obsahující a UnitTest1 mají Category nebo mají Property "Priority" 1"CategoryA"

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

Další informace naleznete v tématu TestCase filter.

Viz také

Další kroky