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 dengandotnet 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"
Untuk Name
atau DisplayName
, gunakan pengodean URL untuk karakter khusus. Misalnya, untuk menjalankan pengujian dengan nama MyTestMethod
dan nilai string "text"
, gunakan filter berikut:
dotnet test --filter "Name=MyTestMethod \(%22text%22\)"
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:
Untuk menjalankan pengujian yang ada
UnitTest1
di atauTestCategoryAttributeadalah ."CategoryA"
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Untuk menjalankan pengujian yang ada
UnitTest1
di mereka FullyQualifiedNamedan memiliki .TestCategoryAttribute"CategoryA"
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Untuk menjalankan pengujian yang berisi FullyQualifiedName
UnitTest1
dan memiliki TestCategoryAttribute atau"CategoryA"
memiliki PriorityAttribute dengan prioritas .1
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
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
FullyQualifiedNameatau memilikiTrait
dengan kunci"Category"
dan nilai ."CategoryA"
dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
Untuk menjalankan pengujian yang ada
TestClass1
di dalamnya FullyQualifiedNamedan memilikiTrait
dengan kunci"Category"
dan nilai"CategoryA"
.dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
Untuk menjalankan pengujian yang berisi FullyQualifiedName
TestClass1
dan memilikiTrait
dengan kunci"Category"
dan nilai"CategoryA"
atau memilikiTrait
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 FullyQualifiedNameatau memiliki Category
dari "CategoryA"
.
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Untuk menjalankan pengujian yang ada UnitTest1
di mereka FullyQualifiedNamedan memiliki .Category
"CategoryA"
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Untuk menjalankan pengujian yang berisi FullyQualifiedNameUnitTest1
dan memiliki Category
atau "CategoryA"
memiliki Property
dengan ."Priority"
1
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Untuk informasi selengkapnya, lihat Filter TestCase.