Executar testes de unidade selecionados
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.exe
o , 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,&
para booleanos e.As expressões podem ser colocadas entre parênteses. Por exemplo:
(Name~MyClass) | (Name~MyClass2)
.Uma expressão sem qualquer operador é interpretada
FullyQualifiedName
como um contém na 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 FullyQualifiedName
Name
ClassName
Priority
TestCategory
xUnidade FullyQualifiedName
DisplayName
Traits
Nunidade FullyQualifiedName
Name
Priority
TestCategory
Operadores
=
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"
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
UnitTest1
em seu FullyQualifiedName ou TestCategoryAttribute é"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Para executar testes que têm
UnitTest1
em seu FullyQualifiedName e têm um TestCategoryAttribute de"CategoryA"
.dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
Para executar testes que contenham FullyQualifiedName
UnitTest1
e tenham um TestCategoryAttribute de ou tenham um PriorityAttribute com"CategoryA"
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 | 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
TestClass1
em seus FullyQualifiedName ou tenham 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 contêm FullyQualifiedName
TestClass1
e têm umTrait
com uma chave de"Category"
e valor de"CategoryA"
ou têm umTrait
com uma chave de"Priority"
e valor de .1
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 | 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 FullyQualifiedName ou tenham um Category
de "CategoryA"
.
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Para executar testes que têm UnitTest1
em seu 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 ou tenham um Property
com "CategoryA"
um "Priority"
de 1
.
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
Para obter mais informações, consulte Filtro TestCase.