Geselecteerde eenheidstests uitvoeren
Met de dotnet test
opdracht in .NET Core kunt u een filterexpressie gebruiken om geselecteerde tests uit te voeren. In dit artikel wordt beschreven hoe u tests filtert. In de voorbeelden wordt gebruikgemaakt dotnet test
van . Als u gebruikt vstest.console.exe
, vervangt --filter
u door --testcasefilter:
.
Syntaxis
dotnet test --filter <Expression>
De expressie heeft de indeling
<Property><Operator><Value>[|&<Expression>]
.Expressies kunnen worden samengevoegd met booleaanse operators:
|
voor booleaanse operatoren of voor&
booleaanse waarden en.Expressies kunnen tussen haakjes worden weergegeven. Voorbeeld:
(Name~MyClass) | (Name~MyClass2)
.Een expressie zonder operator wordt geïnterpreteerd als een bevat in de
FullyQualifiedName
eigenschap. Is bijvoorbeelddotnet test --filter xyz
hetzelfde alsdotnet test --filter FullyQualifiedName~xyz
.Eigenschap is een kenmerk van de
Test Case
. De volgende eigenschappen worden bijvoorbeeld ondersteund door populaire frameworks voor eenheidstests.Testframework Ondersteunde eigenschappen MSTest FullyQualifiedName
Name
ClassName
Priority
TestCategory
xUnit FullyQualifiedName
DisplayName
Traits
Nunit FullyQualifiedName
Name
Priority
TestCategory
Operators
=
exacte overeenkomst!=
niet exacte overeenkomst~
Bevat!~
bevat geen
Waarde is een tekenreeks. Alle zoekacties zijn hoofdlettergevoelig.
Teken ontsnappen
Als u een uitroepteken (!
) in een filterexpressie wilt gebruiken, moet u deze in sommige Linux- of macOS-shells escapen door er een backslash voor te plaatsen (\!
). Met het volgende filter worden bijvoorbeeld alle tests in een naamruimte die het volgende bevat IntegrationTests
overgeslagen:
dotnet test --filter FullyQualifiedName\!~IntegrationTests
Voor FullyQualifiedName
waarden die een komma bevatten voor algemene typeparameters, escapet u de komma met %2C
. Voorbeeld:
dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
MSTest-voorbeelden
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()
{
}
}
}
Expressie | Resultaat |
---|---|
dotnet test --filter Method |
Voert tests uit waarvan FullyQualifiedName de inhoud is.Method |
dotnet test --filter Name~TestMethod1 |
Voert tests uit waarvan de naam het bevat TestMethod1 . |
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 |
Voert tests uit die zich in klasse bevinden MSTestNamespace.UnitTest1 .Opmerking: de ClassName waarde moet een naamruimte hebben, dus ClassName=UnitTest1 werkt niet. |
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 |
Voert alle tests uit, behalve MSTestNamespace.UnitTest1.TestMethod1 . |
dotnet test --filter TestCategory=CategoryA |
Voert tests uit met aantekeningen [TestCategory("CategoryA")] . |
dotnet test --filter Priority=2 |
Voert tests uit met aantekeningen [Priority(2)] . |
Voorbeelden met behulp van de voorwaardelijke operators |
en &
:
Om tests uit te voeren die
UnitTest1
hun FullyQualifiedName of TestCategoryAttribute dat wel of niet zijn"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Om tests uit te voeren die
UnitTest1
hun FullyQualifiedName hebben en een TestCategoryAttribute van"CategoryA"
hebben.dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Om tests uit te voeren die FullyQualifiedName
UnitTest1
een of meer"CategoryA"
TestCategoryAttribute of een met een prioriteit1
hebben.PriorityAttributedotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
xUnit-voorbeelden
using Xunit;
namespace XUnitNamespace
{
public class TestClass1
{
[Fact, Trait("Priority", "1"), Trait("Category", "CategoryA")]
public void Test1()
{
}
[Fact, Trait("Priority", "2")]
public void Test2()
{
}
}
}
Expressie | Resultaat |
---|---|
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 |
Voert slechts één test uit. XUnitNamespace.TestClass1.Test1 |
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 |
Voert alle tests uit, behalve XUnitNamespace.TestClass1.Test1 . |
dotnet test --filter DisplayName~TestClass1 |
Voert tests uit waarvan de weergavenaam bevat TestClass1 . |
In het codevoorbeeld kunnen de gedefinieerde eigenschappen met sleutels "Category"
worden gebruikt en "Priority"
kunnen worden gebruikt voor het filteren.
Expressie | Resultaat |
---|---|
dotnet test --filter XUnit |
Voert tests uit waarvan FullyQualifiedName de inhoud is.XUnit |
dotnet test --filter Category=CategoryA |
Voert tests uit met [Trait("Category", "CategoryA")] . |
Voorbeelden met behulp van de voorwaardelijke operators |
en &
:
Om tests uit te voeren die
TestClass1
hun FullyQualifiedName of eenTrait
sleutel van en waarde"CategoryA"
hebben"Category"
.dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
Om tests uit te voeren die
TestClass1
hun FullyQualifiedName hebben en eenTrait
met een sleutel van en waarde hebben"Category"
van"CategoryA"
.dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
Als u tests wilt uitvoeren die een
TestClass1
FullyQualifiedName sleutel van"Category"
enTrait
een waarde"CategoryA"
hebben van of eenTrait
met een sleutel van en waarde hebben van ."Priority"
1
dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1"
Voorbeelden van eenheid
using NUnit.Framework;
namespace NUnitNamespace
{
public class UnitTest1
{
[Test, Property("Priority", 1), Category("CategoryA")]
public void TestMethod1()
{
}
[Test, Property("Priority", 2)]
public void TestMethod2()
{
}
}
}
Expressie | Resultaat |
---|---|
dotnet test --filter Method |
Voert tests uit waarvan FullyQualifiedName de inhoud is.Method |
dotnet test --filter Name~TestMethod1 |
Voert tests uit waarvan de naam het bevat TestMethod1 . |
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 |
Voert tests uit die zich in klasse bevinden NUnitNamespace.UnitTest1 . |
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 |
Voert alle tests uit, behalve NUnitNamespace.UnitTest1.TestMethod1 . |
dotnet test --filter TestCategory=CategoryA |
Voert tests uit met aantekeningen [Category("CategoryA")] . |
dotnet test --filter Priority=2 |
Voert tests uit met aantekeningen [Priority(2)] . |
Voorbeelden met behulp van de voorwaardelijke operators |
en &
:
Om tests uit te voeren die UnitTest1
hun FullyQualifiedName of een of "CategoryA"
meer Category
hebben.
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Om tests uit te voeren die UnitTest1
hun FullyQualifiedName hebben en een Category
van "CategoryA"
hebben.
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Als u tests wilt uitvoeren die een FullyQualifiedName of meer bevatten UnitTest1
of Category
"CategoryA"
een met een Property
"Priority"
1
van hebben.
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Zie TestCase-filter voor meer informatie.