Bagikan melalui


Menjalankan pengujian unit yang dipilih

Dengan perintah dotnet test di .NET Core, Anda dapat menggunakan ekspresi filter untuk menjalankan pengujian yang dipilih. Artikel ini menunjukkan cara memfilter pengujian. Contoh menggunakan dotnet test. Jika Anda menggunakan vstest.console.exe, ganti --filter dengan --testcasefilter:.

Sintaks

dotnet test --filter <Expression>
  • Ekspresi dalam format <Property><Operator><Value>[|&<Expression>].

    Ekspresi dapat digabungkan dengan operator boolean: | untuk boolean for, & untuk boolean and.

    Ekspresi dapat terlampir dalam tanda kurung. Misalnya: (Name~MyClass) | (Name~MyClass2).

    Ekspresi tanpa operator apa pun ditafsirkan sebagai berisi pada properti FullyQualifiedName. Misalnya, dotnet test --filter xyz sama dengan dotnet test --filter FullyQualifiedName~xyz.

  • Properti adalah atribut dari Test Case. Misalnya, properti berikut didukung oleh kerangka kerja pengujian unit populer.

    Kerangka kerja pengujian Properti yang didukung
    MSTest FullyQualifiedName
    Name
    ClassName
    Priority
    TestCategory
    xUnit FullyQualifiedName
    DisplayName
    Traits
    Nunit FullyQualifiedName
    Name
    Priority
    TestCategory
  • Operator

    • = sama persis
    • != tidak sama persis
    • ~ berisi
    • !~ tidak berisi
  • Nilai adalah string. Semua pencarian tidak peka huruf besar/kecil.

Meng-escape karakter

Untuk menggunakan tanda seru (!) dalam ekspresi filter, Anda harus meng-escapenya di beberapa shell Linux atau macOS dengan memberikan garis miring terbalik di depannya (\!). Misalnya, filter berikut melewatkan semua pengujian dalam namespace layanan yang berisi IntegrationTests:

dotnet test --filter FullyQualifiedName\!~IntegrationTests

Untuk nilai FullyQualifiedName yang menyertakan koma untuk parameter jenis generik, escape koma dengan %2C. Contohnya:

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

Contoh 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()
        {
        }
    }
}
Ekspresi Hasil
dotnet test --filter Method Menjalankan pengujian yang FullyQualifiedName-nya berisi Method.
dotnet test --filter Name~TestMethod1 Menjalankan pengujian yang namanya berisi TestMethod1.
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 Menjalankan pengujian yang ada dalam kelas MSTestNamespace.UnitTest1.
Catatan: Nilai ClassName harus memiliki namespace, sehingga ClassName=UnitTest1 tidak akan berfungsi.
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 Menjalankan semua pengujian kecuali MSTestNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Menjalankan pengujian yang dianotasikan dengan [TestCategory("CategoryA")].
dotnet test --filter Priority=2 Menjalankan pengujian yang dianotasikan dengan [Priority(2)].

Contoh menggunakan operator | dan & kondisional:

Contoh 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()
        {
        }
    }
}
Ekspresi Hasil
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 Hanya menjalankan satu pengujian, XUnitNamespace.TestClass1.Test1.
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 Menjalankan semua pengujian kecuali XUnitNamespace.TestClass1.Test1.
dotnet test --filter DisplayName~TestClass1 Menjalankan pengujian yang nama tampilannya berisi TestClass1.

Dalam contoh kode, sifat yang ditentukan dengan kunci "Category" dan "Priority" dapat digunakan untuk pemfilteran.

Ekspresi Hasil
dotnet test --filter XUnit Menjalankan pengujian yang FullyQualifiedName-nya berisi XUnit.
dotnet test --filter Category=CategoryA Menjalankan pengujian yang memiliki [Trait("Category", "CategoryA")].

Contoh menggunakan operator | dan & kondisional:

  • Untuk menjalankan pengujian yang memiliki TestClass1 FullyQualifiedName atau memiliki Trait dengan kunci "Category" dan nilai ."CategoryA"

    dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
    
  • Untuk menjalankan pengujian yang ada TestClass1 di dalamnya FullyQualifiedName dan memiliki Trait dengan kunci "Category" dan nilai "CategoryA".

    dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
    
  • Untuk menjalankan pengujian yang berisi FullyQualifiedName TestClass1 dan memiliki Trait dengan kunci "Category" dan nilai "CategoryA" atau memiliki Trait dengan kunci "Priority" dan nilai .1

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

Contoh 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()
        {
        }
    }
}
Ekspresi Hasil
dotnet test --filter Method Menjalankan pengujian yang FullyQualifiedName-nya berisi Method.
dotnet test --filter Name~TestMethod1 Menjalankan pengujian yang namanya berisi TestMethod1.
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 Menjalankan pengujian yang ada dalam kelas NUnitNamespace.UnitTest1.
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 Menjalankan semua pengujian kecuali NUnitNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Menjalankan pengujian yang dianotasikan dengan [Category("CategoryA")].
dotnet test --filter Priority=2 Menjalankan pengujian yang dianotasikan dengan [Priority(2)].

Contoh menggunakan operator | dan & kondisional:

Untuk menjalankan tes yang ada UnitTest1 di mereka FullyQualifiedName atau memiliki Category dari "CategoryA".

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

Untuk menjalankan pengujian yang ada UnitTest1 di mereka FullyQualifiedName dan memiliki ."CategoryA"Category

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

Untuk menjalankan pengujian yang berisi FullyQualifiedName UnitTest1 dan memiliki Category atau "CategoryA" memiliki Property dengan .1"Priority"

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

Untuk informasi selengkapnya, lihat Filter TestCase.

Lihat juga

Langkah berikutnya