Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
dotnet test Pomocí příkazu v .NET Core můžete pomocí výrazu filtru spouštět vybrané testy. Tento článek ukazuje, jak filtrovat testy. Příklady používají dotnet test. Pokud používáte vstest.console.exe, nahraďte --filter ho .--testcasefilter:
Syntaxe
dotnet test --filter <Expression>
Výraz je ve formátu
<Property><Operator><Value>[|&<Expression>].Výrazy lze spojit s logickými operátory:
|pro logickou hodnotu nebo pro&logickou hodnotu a.Výrazy mohou být uzavřeny v závorkách. Například:
(Name~MyClass) | (Name~MyClass2).Výraz bez jakéhokoli operátoru je interpretován jako obsahuje ve
FullyQualifiedNamevlastnosti. Například trasadotnet test --filter xyzje stejná jakodotnet test --filter FullyQualifiedName~xyz.Vlastnost je atribut .
Test CaseNapříklad následující vlastnosti jsou podporovány oblíbenými architekturami testů jednotek.Testovací architektura Podporované vlastnosti MSTest FullyQualifiedNameNameClassNamePriorityTestCategoryIdxUnit FullyQualifiedNameDisplayNameTraitsNUnit FullyQualifiedNameNamePriorityTestCategoryCategoryPropertyOperátory
-
=přesná shoda -
!=není přesná shoda -
~obsahuje -
!~neobsahuje
-
Hodnota je řetězec. Všechna vyhledávání nerozlišují malá a velká písmena.
Zapouzdření znaků
Pomocí řídicích sekvencí můžete znázorňovat znaky operátoru filtru v hodnotě filtru. Tyto řídicí sekvence jsou oddělené od jakéhokoli úniku, který vyžaduje vaše prostředí.
| Úniková sekvence | Reprezentuje |
|---|---|
\\ |
\ |
\( |
( |
\) |
) |
\& |
& |
\| |
| |
\= |
= |
\! |
! |
\~ |
~ |
K programovým filtrům použijte Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities.FilterHelper.Escape rozhraní API z Microsoft.VisualStudio.TestPlatform.ObjectModel balíčku NuGet.
Pokud chcete ve výrazu filtru použít vykřičník (!), musíte ho uvozit do některých prostředí Linuxu nebo macOS tak, že před něj vložíte zpětné lomítko (\!). Následující filtr například přeskočí všechny testy v oboru názvů, který obsahuje IntegrationTests:
dotnet test --filter FullyQualifiedName\!~IntegrationTests
Pro FullyQualifiedName hodnoty, které obsahují čárku pro parametry obecného typu, uchytáte čárku s %2C. Příklad:
dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
Vzhledem k tomu, že vaše prostředí také parsuje výraz filtru, uvozujte celou --filter hodnotu vždy, když obsahuje znaky, které prostředí zpracovává speciálně, například <, nebo >,. V PowerShellu se vyžaduje uvozování, kde čárka je operátor pole.
Pro Name nebo DisplayNamepoužijte kódování adresy URL pro speciální znaky. Pokud chcete například spustit test s názvem MyTestMethod a řetězcovou hodnotou "text", použijte následující filtr:
dotnet test --filter "Name=MyTestMethod \(%22text%22\)"
Příklady 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()
{
}
}
}
| Výraz | Výsledek |
|---|---|
dotnet test --filter Method |
Spouští testy, jejichž FullyQualifiedName obsahuje Method. |
dotnet test --filter Name~TestMethod1 |
Spustí testy, jejichž název obsahuje TestMethod1. |
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 |
Spouští testy, které jsou ve třídě MSTestNamespace.UnitTest1.Poznámka: Hodnota ClassName by měla mít obor názvů, takže ClassName=UnitTest1 nebude fungovat. |
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 |
Spustí všechny testy s výjimkou MSTestNamespace.UnitTest1.TestMethod1. |
dotnet test --filter TestCategory=CategoryA |
Spustí testy, které jsou opatřeny poznámkami [TestCategory("CategoryA")]. |
dotnet test --filter Priority=2 |
Spustí testy, které jsou opatřeny poznámkami [Priority(2)]. |
dotnet test --filter "Id=<guid>" |
Spustí testovací případ, jehož zjištěná TestCase.Id hodnota přesně odpovídá identifikátoru GUID. |
Id Filtrování vyžaduje MSTest.TestAdapter 3.6 nebo novější. Získejte identifikátor GUID z testovacího případu, ve které vrátí zjišťování VSTest .TestCase.Id Tento filtr může vybrat jednu rozbalenou iteraci řízenou daty, aniž by se shodovala s zobrazovaným názvem nebo se z něj vyvozovala. Každý řádek musí být zjištěn jako jednotlivý testovací případ; Složený test řízený daty zveřejňuje pouze jednu nadřazenou identitu.
Příklady použití podmíněných operátorů | a &:
Spuštění testů, které mají
UnitTest1v jejich FullyQualifiedNameneboTestCategoryAttribute je"CategoryA".dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"Ke spuštění testů, které mají
UnitTest1v jejich FullyQualifiedNamedotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"Spuštění testů, které obsahují FullyQualifiedName
UnitTest1a mají nebo TestCategoryAttribute"CategoryA"mají prioritu .PriorityAttributedotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Příklady 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()
{
}
}
}
| Výraz | Výsledek |
|---|---|
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 |
Spustí pouze jeden test, XUnitNamespace.TestClass1.Test1. |
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 |
Spustí všechny testy s výjimkou XUnitNamespace.TestClass1.Test1. |
dotnet test --filter DisplayName~TestClass1 |
Spustí testy, jejichž zobrazovaný název obsahuje TestClass1. |
V příkladu kódu se definované vlastnosti s klíči "Category""Priority" dají použít k filtrování.
| Výraz | Výsledek |
|---|---|
dotnet test --filter XUnit |
Spouští testy, jejichž FullyQualifiedName obsahuje XUnit. |
dotnet test --filter Category=CategoryA |
Spustí testy, které mají [Trait("Category", "CategoryA")]. |
Příklady použití podmíněných operátorů | a &:
Ke spuštění testů, které mají
TestClass1v jejich FullyQualifiedNamenebo majíTraitklíč"Category"a hodnotu"CategoryA".dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"Ke spuštění testů, které mají
TestClass1v jejich FullyQualifiedNamea majíTraitklíč"Category"a hodnotu"CategoryA".dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"Ke spuštění testů, které obsahují FullyQualifiedName
TestClass1a hodnotu majíTraitklíč"Category"a hodnotu ."CategoryA"dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1"
Příklady 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()
{
}
}
}
| Výraz | Výsledek |
|---|---|
dotnet test --filter Method |
Spouští testy, jejichž FullyQualifiedName obsahuje Method. |
dotnet test --filter Name~TestMethod1 |
Spustí testy, jejichž název obsahuje TestMethod1. |
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 |
Spouští testy, které jsou ve třídě NUnitNamespace.UnitTest1. |
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 |
Spustí všechny testy s výjimkou NUnitNamespace.UnitTest1.TestMethod1. |
dotnet test --filter TestCategory=CategoryA |
Spustí testy, které jsou opatřeny poznámkami [Category("CategoryA")]. |
dotnet test --filter Priority=2 |
Spustí testy, které jsou opatřeny poznámkami [Priority(2)]. |
Příklady použití podmíněných operátorů | a &:
Ke spuštění testů, které mají UnitTest1 nebo FullyQualifiedNamemajíCategory"CategoryA"
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Ke spuštění testů, které mají UnitTest1 v jejich FullyQualifiedName
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Ke spouštění testů, které mají FullyQualifiedName buď obsahující aUnitTest1mají Category nebo mají "CategoryA"Property"Priority"1
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Další informace naleznete v tématu TestCase filter.