Spuštění vybraných testů jednotek
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
FullyQualifiedName
vlastnosti. Například trasadotnet test --filter xyz
je stejná jakodotnet test --filter FullyQualifiedName~xyz
.Vlastnost je atribut .
Test Case
Například následující vlastnosti jsou podporovány oblíbenými architekturami testů jednotek.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.
Zapouzdření znaků
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"
Pro Name
nebo DisplayName
použ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)] . |
Příklady použití podmíněných operátorů |
a &
:
Spuštění testů, které mají
UnitTest1
v jejich FullyQualifiedNameneboTestCategoryAttribute je"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Ke spuštění testů, které mají
UnitTest1
v jejich FullyQualifiedName"CategoryA"
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Spuštění testů, které obsahují FullyQualifiedName
UnitTest1
a mají nebo"CategoryA"
mají prioritu .PriorityAttribute1
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 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í
TestClass1
v jejich FullyQualifiedNamenebo majíTrait
klíč"Category"
a hodnotu"CategoryA"
.dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
Ke spuštění testů, které mají
TestClass1
v jejich FullyQualifiedNamea majíTrait
klíč"Category"
a hodnotu"CategoryA"
.dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
Ke spuštění testů, které obsahují FullyQualifiedName
Trait
a hodnotu"CategoryA"
mají klíčTrait
a hodnotu ."Priority"
1
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"CategoryA"
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Ke spouštění testů, které mají FullyQualifiedName buď obsahující aUnitTest1
mají Category
nebo mají "CategoryA"
Property
"Priority"
1
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Další informace naleznete v tématu TestCase filter.