Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
FullyQualifiedNamewłaściwości . Na przykład koddotnet test --filter xyzjest 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 FullyQualifiedNameNameClassNamePriorityTestCategoryxUnit FullyQualifiedNameDisplayNameTraitsNunit FullyQualifiedNameNamePriorityTestCategoryOperatory
-
=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"
W przypadku Name lub DisplayNameużyj kodowania adresu URL dla znaków specjalnych. Aby na przykład uruchomić test o nazwie MyTestMethod i wartości ciągu "text", użyj następującego filtru:
dotnet test --filter "Name=MyTestMethod \(%22text%22\)"
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ą
UnitTest1element FullyQualifiedNamelubTestCategoryAttribute ma wartość"CategoryA".dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"Aby uruchomić testy, które mają
UnitTest1element FullyQualifiedNamei mają TestCategoryAttribute element"CategoryA".dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"Aby uruchomić testy, które zawierają FullyQualifiedName
UnitTest1element lub mają TestCategoryAttribute"CategoryA"wartość PriorityAttribute mają priorytet .1dotnet 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ą
TestClass1w sobie FullyQualifiedName lub mająTraitklucz o wartości"Category"i"CategoryA".dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"Aby uruchomić testy, które mają
TestClass1w sobie FullyQualifiedNamei mająTraitklucz i"Category"wartość"CategoryA".dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"Aby uruchomić testy, które zawierają FullyQualifiedName
TestClass1klucz iTraitmają klucz"Category"i wartość"CategoryA"lub mająTraitklucz o wartości i z kluczem"Priority"i wartości .1dotnet 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 FullyQualifiedNamelub mają Category element "CategoryA".
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Aby uruchomić testy, które mają UnitTest1 element FullyQualifiedNamei mają Category element "CategoryA".
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Aby uruchomić testy, które zawierają FullyQualifiedNameUnitTest1element 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.