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 .--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, & dla 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 zawierający właściwość FullyQualifiedName . 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
    • !=nie dokładne dopasowanie
    • ~ Zawiera
    • !~ nie zawiera
  • Wartość jest ciągiem. Wszystkie odnośniki są bez uwzględniania wielkości liter.

Ucieczka znaków

Aby użyć wykrzyknika (!) w wyrażeniu filtru, musisz go uciec w niektórych powłokach systemu Linux lub macOS, umieszczając przed nim ukośnik odwrotny (\!). 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, uniknie przecinka 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()
        {
        }
    }
}
Wyrażenie Wynik
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: Wartość ClassName 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ą polecenia [TestCategory("CategoryA")].
dotnet test --filter Priority=2 Uruchamia testy, które są oznaczone adnotacjami za pomocą polecenia [Priority(2)].

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

Przykłady 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()
        {
        }
    }
}
Wyrażenie Wynik
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ą być używane do filtrowania.

Wyrażenie Wynik
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 element FullyQualifiedNamelub mają Trait klucz i "Category" wartość ."CategoryA"

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

    dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
    
  • Aby uruchomić testy, TestClass1 które zawierają FullyQualifiedNameklucz iTrait mają klucz i wartość "CategoryA"lub mają Trait klucz "Category" z kluczem 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()
        {
        }
    }
}
Wyrażenie Wynik
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ą polecenia [Category("CategoryA")].
dotnet test --filter Priority=2 Uruchamia testy, które są oznaczone adnotacjami za pomocą polecenia [Priority(2)].

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

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

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

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

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

Aby uruchomić testy z elementem zawierającym FullyQualifiedNameUnitTest1element z elementem lub z PropertyCategory"CategoryA" elementem z wartością 1"Priority" .

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

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

Zobacz też

Następne kroki