Udostępnij za pośrednictwem


Uruchamianie wybranych testów jednostkowych

dotnet test Za pomocą polecenia w programie .NET Core można użyć wyrażenia filtru do uruchamiania wybranych testów. W tym artykule pokazano, jak filtrować testy. W przykładach użyto metody dotnet test. Jeśli używasz polecenia vstest.console.exe, zastąp ciąg --filter ciąg .--testcasefilter:

Składnia

dotnet test --filter <Expression>
  • Wyrażenie ma format <Property><Operator><Value>[|&<Expression>].

    Wyrażenia można łączyć z operatorami logicznymi: | dla wartości logicznych lub wartości & logicznych i.

    Wyrażenia można ujęć w nawiasy. Na przykład: (Name~MyClass) | (Name~MyClass2).

    Wyrażenie bez żadnego operatora jest interpretowane jako element zawiera we FullyQualifiedName właściwości . Na przykład kod dotnet test --filter xyz jest taki sam jak kod dotnet test --filter FullyQualifiedName~xyz.

  • Właściwość jest atrybutem Test Case. Na przykład następujące właściwości są obsługiwane przez popularne struktury testów jednostkowych.

    Struktura testowa Obsługiwane właściwości
    MSTest FullyQualifiedName
    Name
    ClassName
    Priority
    TestCategory
    xUnit FullyQualifiedName
    DisplayName
    Traits
    Nunit FullyQualifiedName
    Name
    Priority
    TestCategory
  • Operatory

    • = dokładne dopasowanie
    • !=niezrównane dokładne dopasowanie
    • ~ Contains
    • !~ nie zawiera
  • Wartość jest ciągiem. Wszystkie wyszukiwania są bez uwzględniania wielkości liter.

Znak ucieczki

Aby użyć wykrzyknika (!) w wyrażeniu filtru, musisz go użyć w niektórych powłokach systemu Linux lub macOS, umieszczając ukośnik odwrotny przed nim (\!). Na przykład następujący filtr pomija wszystkie testy w przestrzeni nazw zawierającej IntegrationTests:

dotnet test --filter FullyQualifiedName\!~IntegrationTests

W przypadku FullyQualifiedName wartości, które zawierają przecinek dla parametrów typu ogólnego, należy zawrzeć przecinek za pomocą polecenia %2C. Na przykład:

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

Przykłady 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()
        {
        }
    }
}
Expression Result
dotnet test --filter Method Uruchamia testy, których FullyQualifiedName zawiera Method.
dotnet test --filter Name~TestMethod1 Uruchamia testy, których nazwa zawiera TestMethod1.
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 Uruchamia testy w klasie MSTestNamespace.UnitTest1.
Uwaga: ClassName wartość powinna mieć przestrzeń nazw, więc ClassName=UnitTest1 nie będzie działać.
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 Uruchamia wszystkie testy z wyjątkiem MSTestNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Uruchamia testy, które są oznaczone adnotacjami za pomocą [TestCategory("CategoryA")]polecenia .
dotnet test --filter Priority=2 Uruchamia testy, które są oznaczone adnotacjami za pomocą [Priority(2)]polecenia .

Przykłady przy użyciu operatorów | warunkowych i &:

Przykłady narzędzia 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()
        {
        }
    }
}
Expression Result
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 Uruchamia tylko jeden test, XUnitNamespace.TestClass1.Test1.
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 Uruchamia wszystkie testy z wyjątkiem XUnitNamespace.TestClass1.Test1.
dotnet test --filter DisplayName~TestClass1 Uruchamia testy, których nazwa wyświetlana zawiera TestClass1.

W przykładzie kodu zdefiniowane cechy z kluczami "Category" i "Priority" mogą służyć do filtrowania.

Expression Result
dotnet test --filter XUnit Uruchamia testy, których FullyQualifiedName zawiera XUnit.
dotnet test --filter Category=CategoryA Uruchamia testy z systemem [Trait("Category", "CategoryA")].

Przykłady przy użyciu operatorów | warunkowych i &:

  • Aby uruchomić testy, które mają TestClass1 w sobie FullyQualifiedName lub mają Trait klucz o wartości "Category" i "CategoryA".

    dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
    
  • Aby uruchomić testy, które mają TestClass1 w sobie FullyQualifiedName i mają Trait klucz i "Category" wartość "CategoryA".

    dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
    
  • Aby uruchomić testy, które zawierają FullyQualifiedName TestClass1 klucz i Trait mają klucz "Category" i wartość "CategoryA" lub mają Trait klucz o wartości i z kluczem "Priority" i wartości .1

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

Przykłady 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()
        {
        }
    }
}
Expression Result
dotnet test --filter Method Uruchamia testy, których FullyQualifiedName zawiera Method.
dotnet test --filter Name~TestMethod1 Uruchamia testy, których nazwa zawiera TestMethod1.
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 Uruchamia testy w klasie NUnitNamespace.UnitTest1.
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 Uruchamia wszystkie testy z wyjątkiem NUnitNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Uruchamia testy, które są oznaczone adnotacjami za pomocą [Category("CategoryA")]polecenia .
dotnet test --filter Priority=2 Uruchamia testy, które są oznaczone adnotacjami za pomocą [Priority(2)]polecenia .

Przykłady przy użyciu operatorów | warunkowych i &:

Aby uruchomić testy, które mają UnitTest1 element FullyQualifiedName lub mają Category element "CategoryA".

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

Aby uruchomić testy, które mają UnitTest1 element FullyQualifiedName i mają Category element "CategoryA".

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

Aby uruchomić testy, które zawierają FullyQualifiedName UnitTest1 element i mają Category element lub "CategoryA" mają Property element z wartością ."Priority" 1

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

Aby uzyskać więcej informacji, zobacz Filtr TestCase.

Zobacz też

Następne kroki