Seçili birim testlerini çalıştırma

dotnet test.NET Core'daki komutuyla, seçilen testleri çalıştırmak için bir filtre ifadesi kullanabilirsiniz. Bu makalede testlerin nasıl filtreleneceği gösterilmektedir. Örneklerde kullanılır dotnet test. kullanıyorsanız vstest.console.exedeğerini ile --testcasefilter:değiştirin--filter.

Syntax

dotnet test --filter <Expression>
  • İfade biçimindedir <Property><Operator><Value>[|&<Expression>].

    İfadeler boole işleçleriyle birleştirilebilir: | boole işleçleri için veya& boolean ve için.

    İfadeler parantez içine alınmış olabilir. Örneğin: (Name~MyClass) | (Name~MyClass2).

    herhangi bir işleci olmayan bir ifade, özelliğinde FullyQualifiedNamebir içerir olarak yorumlanır. Örneğin dotnet test --filter xyz ile dotnet test --filter FullyQualifiedName~xyz aynıdır.

  • Özelliği , öğesinin Test Casebir özniteliğidir. Örneğin, aşağıdaki özellikler popüler birim testi çerçeveleri tarafından desteklenir.

    Test çerçevesi Desteklenen özellikler
    MSTest FullyQualifiedName
    Name
    ClassName
    Priority
    TestCategory
    xUnit FullyQualifiedName
    DisplayName
    Traits
    Nunit FullyQualifiedName
    Name
    Priority
    TestCategory
  • İşleçler

    • = tam eşleşme
    • !=tam eşleşme değil
    • ~ Içerir
    • !~ içermez
  • Değer bir dizedir. Tüm aramalar büyük/küçük harfe duyarlı değildir.

Karakter kaçışı

Filtre ifadesinde ünlem işareti (!) kullanmak için önüne ters eğik çizgi (\!) koyarak bazı Linux veya macOS kabuklarında bu işaretin kaçması gerekir. Örneğin, aşağıdaki filtre içeren IntegrationTestsbir ad alanında tüm testleri atlar:

dotnet test --filter FullyQualifiedName\!~IntegrationTests

Genel FullyQualifiedName tür parametreleri için virgül içeren değerler için ile %2Cvirgülden kurtulabilirsiniz. Örnek:

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

MSTest örnekleri

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 Sonuç
dotnet test --filter Method içeren Methodtestleri FullyQualifiedName çalıştırır.
dotnet test --filter Name~TestMethod1 Adında TestMethod1bulunan testleri çalıştırır.
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 sınıfında MSTestNamespace.UnitTest1olan testleri çalıştırır.
Not: Değerin ClassName ad alanı olmalıdır, bu nedenle ClassName=UnitTest1 çalışmaz.
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 dışındaki MSTestNamespace.UnitTest1.TestMethod1tüm testleri çalıştırır.
dotnet test --filter TestCategory=CategoryA ile [TestCategory("CategoryA")]ek açıklama ekleyen testleri çalıştırır.
dotnet test --filter Priority=2 ile [Priority(2)]ek açıklama ekleyen testleri çalıştırır.

Koşullu işleçleri | ve &kullanan örnekler:

xUnit örnekleri

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 Sonuç
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 Yalnızca bir test çalıştırır: XUnitNamespace.TestClass1.Test1.
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 dışındaki XUnitNamespace.TestClass1.Test1tüm testleri çalıştırır.
dotnet test --filter DisplayName~TestClass1 Görünen adı içeren TestClass1testleri çalıştırır.

Kod örneğinde anahtarlarla "Category" tanımlanan özellikler ve "Priority" filtreleme için kullanılabilir.

Expression Sonuç
dotnet test --filter XUnit içeren XUnittestleri FullyQualifiedName çalıştırır.
dotnet test --filter Category=CategoryA olan [Trait("Category", "CategoryA")]testleri çalıştırır.

Koşullu işleçleri | ve &kullanan örnekler:

  • içinde veya anahtarı "Category" ve değerine "CategoryA"sahip Trait testleri FullyQualifiedNameTestClass1 çalıştırmak için.

    dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
    
  • içinde bulunan TestClass1FullyQualifiedName ve anahtarı "Category"veTrait değeri "CategoryA"olan testleri çalıştırmak için.

    dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
    
  • öğesini içeren FullyQualifiedNameTestClass1ve anahtarı veTrait değeri olan veya anahtarı "Category" ve değerine "CategoryA"1sahip olan Trait"Priority" testleri çalıştırmak için.

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

NUnit örnekleri

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 Sonuç
dotnet test --filter Method içeren Methodtestleri FullyQualifiedName çalıştırır.
dotnet test --filter Name~TestMethod1 Adında TestMethod1bulunan testleri çalıştırır.
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 sınıfında NUnitNamespace.UnitTest1olan testleri çalıştırır.
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 dışındaki NUnitNamespace.UnitTest1.TestMethod1tüm testleri çalıştırır.
dotnet test --filter TestCategory=CategoryA ile [Category("CategoryA")]ek açıklama ekleyen testleri çalıştırır.
dotnet test --filter Priority=2 ile [Priority(2)]ek açıklama ekleyen testleri çalıştırır.

Koşullu işleçleri | ve &kullanan örnekler:

içinde veya içinde bir Category"CategoryA"olan UnitTest1FullyQualifiedName testleri çalıştırmak için.

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

içinde ve içinde bir Category"CategoryA"olan UnitTest1FullyQualifiedName testleri çalıştırmak için.

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

içeren veCategory"CategoryA" içeren veyaProperty"Priority"1içeren testleri FullyQualifiedNameUnitTest1 çalıştırmak için.

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

Daha fazla bilgi için bkz . TestCase filtresi.

Ayrıca bkz.

Sonraki adımlar