Share via


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 a dotnet 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 &:

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 um Trait 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 um Trait com uma chave de "Category" e valor de "CategoryA".

    dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
    
  • Para executar testes que contenham FullyQualifiedNameTestClass1e tenham uma Trait com uma chave de "Category" e valor de "CategoryA"ou tenham um Trait 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 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 FullyQualifiedNameUnitTest1e 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