Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Com o dotnet test comando no .NET Core, você pode usar uma expressão de filtro para executar testes selecionados. Este artigo demonstra como filtrar testes. Os exemplos usam dotnet test. Se estiver a utilizar vstest.console.exeo , substitua --filter por --testcasefilter:.
Sintaxe
dotnet test --filter <Expression>
A expressão está no formato
<Property><Operator><Value>[|&<Expression>].As expressões podem ser unidas com operadores booleanos:
|para booleanos ou,¶ booleanos e.As expressões podem ser colocadas entre parênteses. Por exemplo:
(Name~MyClass) | (Name~MyClass2).Uma expressão sem qualquer operador é interpretada como um
FullyQualifiedNamena propriedade. Por exemplo,dotnet test --filter xyzé o mesmo quedotnet test --filter FullyQualifiedName~xyz.A propriedade é um atributo do
Test Case. Por exemplo, as propriedades a seguir são suportadas por estruturas de teste de unidade populares.Quadro de ensaio Propriedades suportadas MSTest FullyQualifiedNameNameClassNamePriorityTestCategoryxUnidade FullyQualifiedNameDisplayNameTraitsNunidade FullyQualifiedNameNamePriorityTestCategoryOperadores
-
=correspondência exata -
!=correspondência não exata -
~contém: -
!~não contém
-
Valor é uma cadeia de caracteres. Todas as pesquisas não diferenciam maiúsculas de minúsculas.
Fuga de personagens
Para usar um ponto de exclamação (!) em uma expressão de filtro, você tem que escapar dele em alguns shells Linux ou macOS colocando uma barra invertida na frente dele (\!). Por exemplo, o filtro a seguir ignora todos os testes em um namespace que contém IntegrationTests:
dotnet test --filter FullyQualifiedName\!~IntegrationTests
Para FullyQualifiedName valores que incluem uma vírgula para parâmetros de tipo genéricos, escape da vírgula com %2C. Por exemplo:
dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
Para Name ou DisplayName, use a codificação de URL para os caracteres especiais. Por exemplo, para executar um teste com o nome MyTestMethod e um valor de cadeia de caracteres "text", use o seguinte filtro:
dotnet test --filter "Name=MyTestMethod \(%22text%22\)"
Exemplos de 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 |
Executa testes cujo FullyQualifiedName contém Method. |
dotnet test --filter Name~TestMethod1 |
Executa testes cujo nome contém TestMethod1. |
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 |
Executa testes que estão na classe MSTestNamespace.UnitTest1.Nota: O ClassName valor deve ter um namespace, portanto ClassName=UnitTest1 , não funcionará. |
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 |
Executa todos os testes, exceto MSTestNamespace.UnitTest1.TestMethod1. |
dotnet test --filter TestCategory=CategoryA |
Executa testes anotados com [TestCategory("CategoryA")]. |
dotnet test --filter Priority=2 |
Executa testes anotados com [Priority(2)]. |
Exemplos usando os operadores | condicionais e &:
Para executar testes que têm
UnitTest1em seu FullyQualifiedNameouTestCategoryAttribute é"CategoryA".dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"Para executar testes que têm
UnitTest1em seu FullyQualifiedNamee têm um TestCategoryAttribute de"CategoryA".dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"Para executar testes que contenham FullyQualifiedName
UnitTest1e tenham um TestCategoryAttribute de ouPriorityAttributeprioridade de .1dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Exemplos de 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 |
Executa apenas um teste, XUnitNamespace.TestClass1.Test1. |
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 |
Executa todos os testes, exceto XUnitNamespace.TestClass1.Test1. |
dotnet test --filter DisplayName~TestClass1 |
Executa testes cujo nome para exibição contém TestClass1. |
No exemplo de código, as características definidas com chaves "Category" e "Priority" podem ser usadas para filtragem.
| Expression | Result |
|---|---|
dotnet test --filter XUnit |
Executa testes cujo FullyQualifiedName contém XUnit. |
dotnet test --filter Category=CategoryA |
Executa testes que têm [Trait("Category", "CategoryA")]. |
Exemplos usando os operadores | condicionais e &:
Para executar testes que tenham
TestClass1em seus FullyQualifiedName ou tenham umTraitcom uma chave de"Category"e valor de"CategoryA".dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"Para executar testes que têm
TestClass1em seus FullyQualifiedName e têm umTraitcom uma chave de"Category"e valor de"CategoryA".dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"Para executar testes que contêm FullyQualifiedName
TestClass1e têm umTraitcom uma chave de"Category"e valor de"CategoryA"ou têm umTraitcom uma chave de"Priority"e valor de .1dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1"
Exemplos de 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 |
Executa testes cujo FullyQualifiedName contém Method. |
dotnet test --filter Name~TestMethod1 |
Executa testes cujo nome contém TestMethod1. |
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 |
Executa testes que estão na classe NUnitNamespace.UnitTest1. |
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 |
Executa todos os testes, exceto NUnitNamespace.UnitTest1.TestMethod1. |
dotnet test --filter TestCategory=CategoryA |
Executa testes anotados com [Category("CategoryA")]. |
dotnet test --filter Priority=2 |
Executa testes anotados com [Priority(2)]. |
Exemplos usando os operadores | condicionais e &:
Para executar testes que tenham UnitTest1 em seu FullyQualifiedNameou tenham um Category de "CategoryA".
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Para executar testes que têm UnitTest1 em seu FullyQualifiedNamee têm um Category de "CategoryA".
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Para executar testes que tenham um FullyQualifiedName contendo UnitTest1e tenham um Category de ouPropertyum "Priority" de 1.
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Para obter mais informações, consulte Filtro TestCase.