Executar testes de unidades selecionados
Com o dotnet test
comando no .NET Core, pode utilizar uma expressão de filtro para executar testes selecionados. Este artigo demonstra como filtrar testes. Os exemplos utilizam dotnet test
. Se estiver a utilizar vstest.console.exe
, substitua por --testcasefilter:
--filter
.
Syntax
dotnet test --filter <Expression>
A expressão está no formato
<Property><Operator><Value>[|&<Expression>]
.As expressões podem ser associadas com operadores booleanos:
|
para booleano ou para&
booleano 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 contém na
FullyQualifiedName
propriedade . Por exemplo,dotnet test --filter xyz
é igual adotnet test --filter FullyQualifiedName~xyz
.A propriedade é um atributo do
Test Case
. Por exemplo, as seguintes propriedades são suportadas por arquiteturas de teste de unidades populares.Arquitetura de teste Propriedades suportadas MSTest FullyQualifiedName
Name
ClassName
Priority
TestCategory
xUnit FullyQualifiedName
DisplayName
Traits
Nunit FullyQualifiedName
Name
Priority
TestCategory
Operadores
=
correspondência exata!=
correspondência não exata~
contém!~
não contém
O valor é uma cadeia. Todas as pesquisas não são sensíveis a maiúsculas e minúsculas.
Caráter a escapar
Para utilizar um ponto de exclamação (!
) numa expressão de filtro, tem de o escapar em algumas shells do Linux ou macOS ao colocar uma barra invertida à sua frente (\!
). Por exemplo, o seguinte filtro ignora todos os testes num espaço de nomes 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 a vírgula com %2C
. Por exemplo:
dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
Exemplos do 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 | Resultado |
---|---|
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 espaço de nomes, pelo ClassName=UnitTest1 que 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 que utilizam os operadores condicionais |
e &
:
Para executar testes que têm
UnitTest1
no respetivo FullyQualifiedNameouTestCategoryAttribute é"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Para executar testes que têm
UnitTest1
no respetivo FullyQualifiedNamee têm um TestCategoryAttribute de"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Para executar testes que contêm FullyQualifiedName
UnitTest1
e têm um TestCategoryAttribute ou"CategoryA"
têm uma PriorityAttribute com uma prioridade de .1
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()
{
}
}
}
Expression | Resultado |
---|---|
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 a apresentar contém TestClass1 . |
No exemplo de código, os traços definidos com chaves "Category"
e "Priority"
podem ser utilizados para filtragem.
Expression | Resultado |
---|---|
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 que utilizam os operadores condicionais |
e &
:
Para executar testes que têm
TestClass1
no respetivo FullyQualifiedNameou 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
no respetivo FullyQualifiedNamee têm umTrait
com uma chave de"Category"
e valor de"CategoryA"
.dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
Para executar testes que contenham FullyQualifiedName
TestClass1
e tenham umaTrait
com uma chave de"Category"
e valor de"CategoryA"
ou tenham umTrait
com uma chave de"Priority"
e valor de1
.dotnet 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 | Resultado |
---|---|
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 que utilizam os operadores condicionais |
e &
:
Para executar testes que têm UnitTest1
no respetivo FullyQualifiedNameou têm um Category
de "CategoryA"
.
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Para executar testes que têm UnitTest1
no respetivo FullyQualifiedNamee têm um Category
de "CategoryA"
.
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Para executar testes que contêm FullyQualifiedNameUnitTest1
e têm um Category
ou "CategoryA"
têm um Property
com um "Priority"
de .1
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Para obter mais informações, veja TestCase filter (Filtro TestCase).
Ver também
Passos seguintes
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários