Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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"
För Name
eller DisplayName
använder du URL-kodningen för specialtecken. Om du till exempel vill köra ett test med namnet MyTestMethod
och ett strängvärde "text"
använder du följande filter:
dotnet test --filter "Name=MyTestMethod \(%22text%22\)"
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 FullyQualifiedNameellerTestCategoryAttribute ä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 FullyQualifiedNamehar 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 FullyQualifiedNamehar 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 ellerFullyQualifiedNamehar 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 FullyQualifiedNameUnitTest1
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.