Uruchamianie wybranych testów jednostkowych
dotnet test
Za pomocą polecenia w programie .NET Core można użyć wyrażenia filtru do uruchamiania wybranych testów. W tym artykule pokazano, jak filtrować testy. W przykładach użyto metody dotnet test
. Jeśli używasz polecenia vstest.console.exe
, zastąp ciąg --filter
ciąg .--testcasefilter:
Składnia
dotnet test --filter <Expression>
Wyrażenie ma format
<Property><Operator><Value>[|&<Expression>]
.Wyrażenia można łączyć z operatorami logicznymi:
|
dla wartości logicznych lub wartości&
logicznych i.Wyrażenia można ujęć w nawiasy. Na przykład:
(Name~MyClass) | (Name~MyClass2)
.Wyrażenie bez żadnego operatora jest interpretowane jako element zawiera we
FullyQualifiedName
właściwości . Na przykład koddotnet test --filter xyz
jest taki sam jak koddotnet test --filter FullyQualifiedName~xyz
.Właściwość jest atrybutem
Test Case
. Na przykład następujące właściwości są obsługiwane przez popularne struktury testów jednostkowych.Struktura testowa Obsługiwane właściwości MSTest FullyQualifiedName
Name
ClassName
Priority
TestCategory
xUnit FullyQualifiedName
DisplayName
Traits
Nunit FullyQualifiedName
Name
Priority
TestCategory
Operatory
=
dokładne dopasowanie!=
niezrównane dokładne dopasowanie~
Contains!~
nie zawiera
Wartość jest ciągiem. Wszystkie wyszukiwania są bez uwzględniania wielkości liter.
Znak ucieczki
Aby użyć wykrzyknika (!
) w wyrażeniu filtru, musisz go użyć w niektórych powłokach systemu Linux lub macOS, umieszczając ukośnik odwrotny przed nim (\!
). Na przykład następujący filtr pomija wszystkie testy w przestrzeni nazw zawierającej IntegrationTests
:
dotnet test --filter FullyQualifiedName\!~IntegrationTests
W przypadku FullyQualifiedName
wartości, które zawierają przecinek dla parametrów typu ogólnego, należy zawrzeć przecinek za pomocą polecenia %2C
. Na przykład:
dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
Przykłady 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()
{
}
}
}
Expression | Result |
---|---|
dotnet test --filter Method |
Uruchamia testy, których FullyQualifiedName zawiera Method . |
dotnet test --filter Name~TestMethod1 |
Uruchamia testy, których nazwa zawiera TestMethod1 . |
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 |
Uruchamia testy w klasie MSTestNamespace.UnitTest1 .Uwaga: ClassName wartość powinna mieć przestrzeń nazw, więc ClassName=UnitTest1 nie będzie działać. |
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 |
Uruchamia wszystkie testy z wyjątkiem MSTestNamespace.UnitTest1.TestMethod1 . |
dotnet test --filter TestCategory=CategoryA |
Uruchamia testy, które są oznaczone adnotacjami za pomocą [TestCategory("CategoryA")] polecenia . |
dotnet test --filter Priority=2 |
Uruchamia testy, które są oznaczone adnotacjami za pomocą [Priority(2)] polecenia . |
Przykłady przy użyciu operatorów |
warunkowych i &
:
Aby uruchomić testy, które mają
UnitTest1
element FullyQualifiedName lub TestCategoryAttribute ma wartość"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Aby uruchomić testy, które mają
UnitTest1
element FullyQualifiedName i mają TestCategoryAttribute element"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Aby uruchomić testy, które zawierają FullyQualifiedName
UnitTest1
element lub mają TestCategoryAttribute PriorityAttribute wartość"CategoryA"
lub mają priorytet .1
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Przykłady narzędzia 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()
{
}
}
}
Expression | Result |
---|---|
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 |
Uruchamia tylko jeden test, XUnitNamespace.TestClass1.Test1 . |
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 |
Uruchamia wszystkie testy z wyjątkiem XUnitNamespace.TestClass1.Test1 . |
dotnet test --filter DisplayName~TestClass1 |
Uruchamia testy, których nazwa wyświetlana zawiera TestClass1 . |
W przykładzie kodu zdefiniowane cechy z kluczami "Category"
i "Priority"
mogą służyć do filtrowania.
Expression | Result |
---|---|
dotnet test --filter XUnit |
Uruchamia testy, których FullyQualifiedName zawiera XUnit . |
dotnet test --filter Category=CategoryA |
Uruchamia testy z systemem [Trait("Category", "CategoryA")] . |
Przykłady przy użyciu operatorów |
warunkowych i &
:
Aby uruchomić testy, które mają
TestClass1
w sobie FullyQualifiedName lub mająTrait
klucz o wartości"Category"
i"CategoryA"
.dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
Aby uruchomić testy, które mają
TestClass1
w sobie FullyQualifiedName i mająTrait
klucz i"Category"
wartość"CategoryA"
.dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
Aby uruchomić testy, które zawierają FullyQualifiedName
TestClass1
klucz iTrait
mają klucz"Category"
i wartość"CategoryA"
lub mająTrait
klucz o wartości i z kluczem"Priority"
i wartości .1
dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1"
Przykłady 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()
{
}
}
}
Expression | Result |
---|---|
dotnet test --filter Method |
Uruchamia testy, których FullyQualifiedName zawiera Method . |
dotnet test --filter Name~TestMethod1 |
Uruchamia testy, których nazwa zawiera TestMethod1 . |
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 |
Uruchamia testy w klasie NUnitNamespace.UnitTest1 . |
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 |
Uruchamia wszystkie testy z wyjątkiem NUnitNamespace.UnitTest1.TestMethod1 . |
dotnet test --filter TestCategory=CategoryA |
Uruchamia testy, które są oznaczone adnotacjami za pomocą [Category("CategoryA")] polecenia . |
dotnet test --filter Priority=2 |
Uruchamia testy, które są oznaczone adnotacjami za pomocą [Priority(2)] polecenia . |
Przykłady przy użyciu operatorów |
warunkowych i &
:
Aby uruchomić testy, które mają UnitTest1
element FullyQualifiedName lub mają Category
element "CategoryA"
.
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Aby uruchomić testy, które mają UnitTest1
element FullyQualifiedName i mają Category
element "CategoryA"
.
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Aby uruchomić testy, które zawierają FullyQualifiedName UnitTest1
element i mają Category
element lub "CategoryA"
mają Property
element z wartością ."Priority"
1
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Aby uzyskać więcej informacji, zobacz Filtr TestCase.