Spuštění vybraných testů jednotek
dotnet test
Pomocí příkazu v .NET Core můžete použít výraz filtru ke spuštění vybraných testů. Tento článek ukazuje, jak filtrovat testy. V příkladech se používá dotnet test
. Pokud používáte vstest.console.exe
, nahraďte za --filter
--testcasefilter:
.
Syntax
dotnet test --filter <Expression>
Výraz je ve formátu
<Property><Operator><Value>[|&<Expression>]
.Výrazy je možné spojit pomocí logických operátorů:
|
pro boolean nebo,&
pro boolean a.Výrazy mohou být uzavřeny v závorkách. Příklad:
(Name~MyClass) | (Name~MyClass2)
.Výraz bez jakéhokoli operátoru je interpretován jako contains ve
FullyQualifiedName
vlastnosti . Například trasadotnet test --filter xyz
je stejná jakodotnet test --filter FullyQualifiedName~xyz
.Vlastnost je atribut .
Test Case
Oblíbené architektury testování jednotek podporují například následující vlastnosti.Testovací architektura Podporované vlastnosti MSTest FullyQualifiedName
Name
ClassName
Priority
TestCategory
xUnit FullyQualifiedName
DisplayName
Traits
Nunit FullyQualifiedName
Name
Priority
TestCategory
Operá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.
Unikající znak
Pokud chcete ve výrazu filtru použít vykřičník (!
), musíte ho v některých prostředích Linuxu nebo macOS uvozit tak, že před něj umístíte zpětné lomítko (\!
). Například následující filtr přeskočí všechny testy v oboru názvů, který obsahuje IntegrationTests
:
dotnet test --filter FullyQualifiedName\!~IntegrationTests
U FullyQualifiedName
hodnot, které obsahují čárku pro parametry obecného typu, použijte k řídicímu znaku čárku .%2C
Příklad:
dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
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 |
Spustí testy, které FullyQualifiedName obsahují Method . |
dotnet test --filter Name~TestMethod1 |
Spustí testy, jejichž název obsahuje TestMethod1 . |
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 |
Spustí 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 kromě MSTestNamespace.UnitTest1.TestMethod1 . |
dotnet test --filter TestCategory=CategoryA |
Spustí testy, které jsou anotovány pomocí [TestCategory("CategoryA")] . |
dotnet test --filter Priority=2 |
Spustí testy, které jsou anotovány pomocí [Priority(2)] . |
Příklady použití podmíněných operátorů |
a &
:
Spuštění testů, které mají
UnitTest1
v FullyQualifiedNameneboTestCategoryAttribute ."CategoryA"
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Chcete-li spustit testy, které mají
UnitTest1
v FullyQualifiedNamesouboru a mají TestCategoryAttribute ."CategoryA"
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Spuštění testů, které obsahují FullyQualifiedName
UnitTest1
a mají TestCategoryAttribute nebo"CategoryA"
majíPriorityAttribute prioritu1
.dotnet 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 kromě XUnitNamespace.TestClass1.Test1 . |
dotnet test --filter DisplayName~TestClass1 |
Spustí testy, jejichž zobrazovaný název obsahuje TestClass1 . |
V příkladu kódu je možné pro filtrování použít definované vlastnosti s klíči "Category"
a "Priority"
.
Výraz | Výsledek |
---|---|
dotnet test --filter XUnit |
Spustí testy, které FullyQualifiedName obsahují XUnit . |
dotnet test --filter Category=CategoryA |
Spustí testy, které mají [Trait("Category", "CategoryA")] . |
Příklady použití podmíněných operátorů |
a &
:
Spuštění testů, které mají
TestClass1
ve svém FullyQualifiedNamesouboru nebo majíTrait
klíč"Category"
a hodnotu"CategoryA"
.dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
Spuštění testů, které mají
TestClass1
v FullyQualifiedNamesouboru a majíTrait
klíč"Category"
a hodnotu"CategoryA"
.dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
Spuštění testů, které obsahují FullyQualifiedName
TestClass1
klíč aTrait
mají klíč"Category"
a hodnotu"CategoryA"
, nebo sTrait
klíčem"Priority"
a hodnotou1
.dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1"
NUnit examples
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 |
Spustí testy, které FullyQualifiedName obsahují Method . |
dotnet test --filter Name~TestMethod1 |
Spustí testy, jejichž název obsahuje TestMethod1 . |
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 |
Spustí testy, které jsou ve třídě NUnitNamespace.UnitTest1 . |
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 |
Spustí všechny testy kromě NUnitNamespace.UnitTest1.TestMethod1 . |
dotnet test --filter TestCategory=CategoryA |
Spustí testy, které jsou anotovány pomocí [Category("CategoryA")] . |
dotnet test --filter Priority=2 |
Spustí testy, které jsou anotovány pomocí [Priority(2)] . |
Příklady použití podmíněných operátorů |
a &
:
Spuštění testů, které mají UnitTest1
ve svém FullyQualifiedNamesouboru nebo mají Category
."CategoryA"
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Chcete-li spustit testy, které mají UnitTest1
v FullyQualifiedNamesouboru a mají Category
."CategoryA"
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Spuštění testů, které obsahují FullyQualifiedNameUnitTest1
a mají Category
"CategoryA"
nebo majíProperty
s "Priority"
1
.
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Další informace najdete v tématu Filtr testovacího případu.
Viz také
Další kroky
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro