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.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, & 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 que dotnet 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 &:

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 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 em seus FullyQualifiedName e têm um Trait 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 um Trait com uma chave de "Category" e valor de "CategoryA" ou têm 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 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.

Consulte também

Próximos passos