Executar testes de unidade selecionados
Com o comando dotnet test
no .NET Core, use uma expressão de filtro para executar testes selecionados. Este artigo demonstra como filtrar testes. Os exemplos usam dotnet test
. Se você estiver usando vstest.console.exe
, substitua --filter
por --testcasefilter:
.
Sintaxe
dotnet test --filter <Expression>
A expressão está no formato
<Property><Operator><Value>[|&<Expression>]
.Expressões podem ser unidas com operadores boolianos:
|
para booliano or,&
para booliano and.Expressões podem ser colocadas entre parênteses. Por exemplo:
(Name~MyClass) | (Name~MyClass2)
.Uma expressão sem nenhum operador é interpretada como uma contém na
FullyQualifiedName
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 têm suporte nas estruturas populares de teste de unidade.Estrutura de teste Propriedades com suporte MSTest FullyQualifiedName
Name
ClassName
Priority
TestCategory
xUnit FullyQualifiedName
DisplayName
Traits
Nunit FullyQualifiedName
Name
Priority
TestCategory
Operadores
=
correspondência exata!=
sem correspondência exata~
contém!~
não contém
Valor é uma cadeia de caracteres. As pesquisas não diferenciam maiúsculas de minúsculas.
Escape de caracteres
Para usar um ponto de exclamação (!
) em uma expressão de filtro, você precisa escapar dela em alguns shells Linux ou macOS colocando uma barra invertida na frente dela (\!
). Por exemplo, o filtro a seguir ignora todos os testes em um namespace que contém IntegrationTests
:
dotnet test --filter FullyQualifiedName\!~IntegrationTests
Para valores FullyQualifiedName
que incluem uma vírgula para parâmetros de tipo genérico, escape da vírgula com %2C
. Por exemplo:
dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
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()
{
}
}
}
Expressão | 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 .Observação: o valor ClassName 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 que são anotados com [TestCategory("CategoryA")] . |
dotnet test --filter Priority=2 |
Executa testes que são anotados com [Priority(2)] . |
Exemplos usando os operadores condicionais |
e &
:
Para executar testes que têm
UnitTest1
em seu FullyQualifiedName ou TestCategoryAttribute é"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Para executar testes que têm
UnitTest1
em seus FullyQualifiedName e têm um TestCategoryAttribute de"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Para executar testes que tenham FullyQualifiedName contendo
UnitTest1
e tenham um TestCategoryAttribute de"CategoryA"
ou tenham um PriorityAttribute com uma prioridade de1
.dotnet 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()
{
}
}
}
Expressão | Result |
---|---|
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 |
Executa somente 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 de exibição contém TestClass1 . |
No exemplo de código, as características definidas com chaves "Category"
e "Priority"
podem ser usadas para filtragem.
Expressão | 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 têm
TestClass1
em seu FullyQualifiedName ou têm umTrait
com uma chave de"Category"
e valor de"CategoryA"
.dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
Para executar testes que têm
TestClass1
em seus FullyQualifiedName e têm umTrait
com uma chave de"Category"
e valor de"CategoryA"
.dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
Para executar testes que tenham contendo
TestClass1
e tenham umTrait
com uma chave de"Category"
e valor de"CategoryA"
ou tenham umTrait
com uma chave de"Priority"
e valor de1
. FullyQualifiedNamedotnet 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()
{
}
}
}
Expressão | 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 que são anotados com [Category("CategoryA")] . |
dotnet test --filter Priority=2 |
Executa testes que são anotados com [Priority(2)] . |
Exemplos usando os operadores condicionais |
e &
:
Para executar testes que tenham UnitTest1
em seus FullyQualifiedName ou tenham um Category
de "CategoryA"
.
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Para executar testes que têm UnitTest1
em seus FullyQualifiedName e têm um Category
de "CategoryA"
.
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Para executar testes que tenham um FullyQualifiedName contendo UnitTest1
e tenham um Category
de "CategoryA"
ou tenham um Property
com um "Priority"
de 1
.
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Para obter mais informações, consulte Filtro TestCase.