Megosztás a következőn keresztül:


Kijelölt egységtesztek futtatása

dotnet test A .NET Core parancsával szűrőkifejezéssel futtathatja a kiválasztott teszteket. Ez a cikk bemutatja, hogyan szűrheti a teszteket. A példák a következőt használják dotnet test: Ha használjavstest.console.exe, cserélje le a következőre--testcasefilter:--filter: .

Syntax

dotnet test --filter <Expression>
  • A kifejezés formátuma <Property><Operator><Value>[|&<Expression>].

    A kifejezések logikai operátorokkal is összekapcsolhatók: | logikai vagy& logikai és.

    A kifejezések zárójelben is csatolhatók. Például: (Name~MyClass) | (Name~MyClass2)

    Az operátor nélküli kifejezéseket a rendszer a tulajdonság tartalmaként értelmeziFullyQualifiedName. Például ugyanaz, dotnet test --filter xyz mint dotnet test --filter FullyQualifiedName~xyza .

  • A tulajdonság a Test Case. A népszerű egységtesztelési keretrendszerek például az alábbi tulajdonságokat támogatják.

    Tesztelési keretrendszer Támogatott tulajdonságok
    MSTest FullyQualifiedName
    Name
    ClassName
    Priority
    TestCategory
    xUnit FullyQualifiedName
    DisplayName
    Traits
    Nunit FullyQualifiedName
    Name
    Priority
    TestCategory
  • Operátorok

    • = pontos egyezés
    • !=nem pontos egyezés
    • ~ Tartalmaz
    • !~ nem tartalmaz
  • Az érték egy sztring. Minden keresés érzéketlen a kis- és nagybetűk között.

A karakter menekülése

Ha felkiáltójelet (!) szeretne használni egy szűrőkifejezésben, néhány Linux- vagy macOS-rendszerhéjban meg kell szabadulnia, ha egy fordított perjelet helyez elé (\!). A következő szűrő például kihagyja az összes tesztet egy névtérben, amely tartalmazza a következőket IntegrationTests:

dotnet test --filter FullyQualifiedName\!~IntegrationTests

Az általános típusparaméterekhez vesszőt tartalmazó értékek esetén FullyQualifiedName a vesszőt a következővel %2Ckell feloldani: Példa:

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

MSTest-példák

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 Eredmény
dotnet test --filter Method Futtatja azokat a teszteket, amelyek FullyQualifiedName tartalmazzák azokat Method.
dotnet test --filter Name~TestMethod1 Futtatja azokat a teszteket, amelyeknek a neve tartalmazza.TestMethod1
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 Osztályban lévő MSTestNamespace.UnitTest1teszteket futtat.
Megjegyzés: Az ClassName értéknek névtérrel kell rendelkeznie, ezért ClassName=UnitTest1 nem fog működni.
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 Az összes tesztet futtatja a kivételével MSTestNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA A következővel jegyzetelt [TestCategory("CategoryA")]teszteket futtatja: .
dotnet test --filter Priority=2 A következővel jegyzetelt [Priority(2)]teszteket futtatja: .

Példák a feltételes operátorok | és &a:

  • Olyan tesztek futtatása, amelyek a sajátjukban FullyQualifiedName vagy TestCategoryAttribute azok között vannak UnitTest1 "CategoryA".

    dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
    
  • Olyan tesztek futtatása, amelyek a sajátjukban FullyQualifiedName vannakUnitTest1, és amelyekben van egyTestCategoryAttribute."CategoryA"

    dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
    
  • Olyan tesztek futtatásához, amelyek FullyQualifiedName tartalmazzák UnitTest1 és rendelkeznek "CategoryA" TestCategoryAttribute egy vagy több PriorityAttribute prioritású 1teszttel.

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

xUnit-példák

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 Eredmény
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 Csak egy tesztet futtat. XUnitNamespace.TestClass1.Test1
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 Az összes tesztet futtatja a kivételével XUnitNamespace.TestClass1.Test1.
dotnet test --filter DisplayName~TestClass1 Futtatja azokat a teszteket, amelyek megjelenítendő nevét tartalmazza TestClass1.

A kód példájában a kulcsokat tartalmazó "Category" "Priority" , definiált tulajdonságok használhatók szűrésre.

Expression Eredmény
dotnet test --filter XUnit Futtatja azokat a teszteket, amelyek FullyQualifiedName tartalmazzák azokat XUnit.
dotnet test --filter Category=CategoryA Futtatja azokat a teszteket, amelyek rendelkeznek [Trait("Category", "CategoryA")].

Példák a feltételes operátorok | és &a:

  • Olyan tesztek futtatásához, amelyekben FullyQualifiedName TestClass1 szerepel a Trait kulcs "Category" és az érték."CategoryA"

    dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
    
  • Olyan tesztek futtatásához, amelyek TestClass1 rendelkeznek a hozzájuk FullyQualifiedName tartozó és Trait a kulcsukkal "Category" és értékükkel"CategoryA".

    dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
    
  • Olyan tesztek futtatása, amelyek FullyQualifiedName tartalmazzák TestClass1 és rendelkeznek Trait egy kulccsal "Category" és értékkel"CategoryA", vagy rendelkezik Trait egy kulccsal "Priority" és értékkel1.

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

NUnit-példák

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 Eredmény
dotnet test --filter Method Futtatja azokat a teszteket, amelyek FullyQualifiedName tartalmazzák azokat Method.
dotnet test --filter Name~TestMethod1 Futtatja azokat a teszteket, amelyeknek a neve tartalmazza.TestMethod1
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 Osztályban lévő NUnitNamespace.UnitTest1teszteket futtat.
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 Az összes tesztet futtatja a kivételével NUnitNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA A következővel jegyzetelt [Category("CategoryA")]teszteket futtatja: .
dotnet test --filter Priority=2 A következővel jegyzetelt [Priority(2)]teszteket futtatja: .

Példák a feltételes operátorok | és &a:

Olyan tesztek futtatása, amelyek UnitTest1 a saját vagy FullyQualifiedName a."CategoryA"Category

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

Olyan tesztek futtatása, amelyek a sajátjukban FullyQualifiedName vannakUnitTest1, és amelyekben van egyCategory."CategoryA"

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

Olyan tesztek futtatásához, amelyek FullyQualifiedName tartalmaznak UnitTest1 , és Category amelyekből "CategoryA" van egy, vagy rendelkezik Property a következővel "Priority" 1: .

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

További információ: TestCase szűrő.

Lásd még

Következő lépések