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 koddotnet test --filter xyz
jest taki sam jak koddotnet 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 &
:
Aby uruchomić testy, które mają
UnitTest1
wartość FullyQualifiedNamelubTestCategoryAttribute to"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Aby uruchomić testy, które mają
UnitTest1
element FullyQualifiedNamei mają TestCategoryAttribute element"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Aby uruchomić testy,
UnitTest1
które zawierają FullyQualifiedNameelement lub mają TestCategoryAttribute wartość"CategoryA"
lub mają PriorityAttribute priorytet .1
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
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 FullyQualifiedNameUnitTest1
element z elementem lub z Property
Category
"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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla