Köra valda enhetstester
dotnet test
Med kommandot i .NET Core kan du använda ett filteruttryck för att köra valda tester. Den här artikeln visar hur du filtrerar tester. Exemplen använder dotnet test
. Om du använder ersätter vstest.console.exe
--filter
du med --testcasefilter:
.
Syntax
dotnet test --filter <Expression>
Uttrycket är i formatet
<Property><Operator><Value>[|&<Expression>]
.Uttryck kan kopplas med booleska operatorer:
|
för booleska eller&
booleska och.Uttryck kan omges av parenteser. Exempel:
(Name~MyClass) | (Name~MyClass2)
.Ett uttryck utan operator tolkas som en contains på
FullyQualifiedName
egenskapen. Är till exempeldotnet test --filter xyz
samma somdotnet test --filter FullyQualifiedName~xyz
.Egenskapen är ett attribut för
Test Case
. Följande egenskaper stöds till exempel av populära enhetstestramverk.Testramverk Egenskaper som stöds MSTest FullyQualifiedName
Name
ClassName
Priority
TestCategory
xUnit FullyQualifiedName
DisplayName
Traits
Nunit FullyQualifiedName
Name
Priority
TestCategory
Operatorer
=
exakt matchning!=
inte exakt matchning~
Innehåller!~
innehåller inte
Värdet är en sträng. Alla sökningar är skiftlägesokänsliga.
Tecken som flyr
Om du vill använda ett utropstecken (!
) i ett filteruttryck måste du undvika det i vissa Linux- eller macOS-gränssnitt genom att placera ett omvänt snedstreck framför det (\!
). Följande filter hoppar till exempel över alla tester i ett namnområde som innehåller IntegrationTests
:
dotnet test --filter FullyQualifiedName\!~IntegrationTests
För FullyQualifiedName
värden som innehåller ett kommatecken för generiska typparametrar slipper du kommatecknet med %2C
. Till exempel:
dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
MSTest-exempel
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()
{
}
}
}
Uttryck | Result |
---|---|
dotnet test --filter Method |
Kör tester vars FullyQualifiedName innehåller Method . |
dotnet test --filter Name~TestMethod1 |
Kör tester vars namn innehåller TestMethod1 . |
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 |
Kör tester som finns i klassen MSTestNamespace.UnitTest1 .Obs! Värdet ClassName ska ha ett namnområde, så ClassName=UnitTest1 det fungerar inte. |
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 |
Kör alla tester utom MSTestNamespace.UnitTest1.TestMethod1 . |
dotnet test --filter TestCategory=CategoryA |
Kör tester som kommenteras med [TestCategory("CategoryA")] . |
dotnet test --filter Priority=2 |
Kör tester som kommenteras med [Priority(2)] . |
Exempel som använder villkorsoperatorerna |
och &
:
Så här kör du tester som har
UnitTest1
i deras FullyQualifiedName eller TestCategoryAttribute är"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Att köra tester som har
UnitTest1
i och FullyQualifiedName har en TestCategoryAttribute av ."CategoryA"
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
För att köra tester som antingen FullyQualifiedName innehåller
UnitTest1
och har en TestCategoryAttribute av"CategoryA"
eller har en PriorityAttribute med prioriteten1
.dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
xUnit-exempel
using Xunit;
namespace XUnitNamespace
{
public class TestClass1
{
[Fact, Trait("Priority", "1"), Trait("Category", "CategoryA")]
public void Test1()
{
}
[Fact, Trait("Priority", "2")]
public void Test2()
{
}
}
}
Uttryck | Result |
---|---|
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 |
Kör bara ett test, XUnitNamespace.TestClass1.Test1 . |
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 |
Kör alla tester utom XUnitNamespace.TestClass1.Test1 . |
dotnet test --filter DisplayName~TestClass1 |
Kör tester vars visningsnamn innehåller TestClass1 . |
I kodexemplet kan de definierade egenskaperna med nycklar "Category"
och "Priority"
användas för filtrering.
Uttryck | Result |
---|---|
dotnet test --filter XUnit |
Kör tester vars FullyQualifiedName innehåller XUnit . |
dotnet test --filter Category=CategoryA |
Kör tester som har [Trait("Category", "CategoryA")] . |
Exempel som använder villkorsoperatorerna |
och &
:
Så här kör du tester som har
TestClass1
i eller FullyQualifiedName har enTrait
med nyckeln"Category"
och värdet ."CategoryA"
dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
Så här kör du tester som har
TestClass1
i och FullyQualifiedName har enTrait
med nyckeln"Category"
och värdet ."CategoryA"
dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
För att köra tester som antingen FullyQualifiedName innehåller
TestClass1
och har enTrait
med nyckeln"Category"
och värdet"CategoryA"
för eller har enTrait
med nyckeln"Priority"
och värdet1
.dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1"
NUnit-exempel
using NUnit.Framework;
namespace NUnitNamespace
{
public class UnitTest1
{
[Test, Property("Priority", 1), Category("CategoryA")]
public void TestMethod1()
{
}
[Test, Property("Priority", 2)]
public void TestMethod2()
{
}
}
}
Uttryck | Result |
---|---|
dotnet test --filter Method |
Kör tester vars FullyQualifiedName innehåller Method . |
dotnet test --filter Name~TestMethod1 |
Kör tester vars namn innehåller TestMethod1 . |
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 |
Kör tester som finns i klassen NUnitNamespace.UnitTest1 . |
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 |
Kör alla tester utom NUnitNamespace.UnitTest1.TestMethod1 . |
dotnet test --filter TestCategory=CategoryA |
Kör tester som kommenteras med [Category("CategoryA")] . |
dotnet test --filter Priority=2 |
Kör tester som kommenteras med [Priority(2)] . |
Exempel som använder villkorsoperatorerna |
och &
:
För att köra tester som har UnitTest1
i eller FullyQualifiedName har en Category
av "CategoryA"
.
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Att köra tester som har UnitTest1
i och FullyQualifiedName har en Category
av ."CategoryA"
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
För att köra tester som antingen FullyQualifiedName UnitTest1
innehåller och har en Category
av "CategoryA"
eller har en Property
med en "Priority"
av .1
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Mer information finns i TestCase-filtret.