Irakurri ingelesez

Partekatu honen bidez:


Ejecución de pruebas unitarias seleccionadas

Elección de un marco de prueba unitaria

Con el comando dotnet test en .NET Core, se puede usar una expresión de filtro para ejecutar las pruebas seleccionadas. En este artículo se explica cómo filtrar las pruebas. En los ejemplos se usa dotnet test. Si está usando vstest.console.exe, reemplace --filter por --testcasefilter:.

Sintaxis

CLI de .NET
dotnet test --filter <Expression>
  • Expression tiene el formato <Property><Operator><Value>[|&<Expression>].

    Las expresiones se pueden unir con operadores booleanos: | para el booleano or y & para el booleano and.

    Las expresiones pueden incluirse entre paréntesis. Por ejemplo: (Name~MyClass) | (Name~MyClass2).

    Una expresión sin ningún operador se interpreta como elemento contains en la propiedad FullyQualifiedName. Por ejemplo, dotnet test --filter xyz es lo mismo que dotnet test --filter FullyQualifiedName~xyz.

  • Property es un atributo de Test Case. Por ejemplo, las propiedades siguientes son compatibles con los marcos de pruebas unitarias populares.

    Marco de prueba Propiedades admitidas
    MSTest FullyQualifiedName
    Name
    ClassName
    Priority
    TestCategory
    xUnit FullyQualifiedName
    DisplayName
    Traits
    Nunit FullyQualifiedName
    Name
    Priority
    TestCategory
  • Operadores

    • = coincidencia exacta
    • != coincidencia no exacta
    • ~ contiene
    • !~ no contiene
  • Value es una cadena. Todas las búsquedas distinguen mayúsculas de minúsculas.

Escape de caracteres

Para usar un signo de exclamación (!) en una expresión de filtro, aplíquele una secuencia de escape en algún shell de Linux o macOS mediante la colocación de una barra diagonal inversa delante (\!). Por ejemplo, el filtro siguiente omite todas las pruebas de un espacio de nombres que contiene IntegrationTests:

CLI de .NET
dotnet test --filter FullyQualifiedName\!~IntegrationTests

En el caso de los valores FullyQualifiedName que incluyen una coma para los parámetros de tipo genérico, escape la coma con %2C. Por ejemplo:

CLI de .NET
dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"

Para Name o DisplayName, use la codificación url para los caracteres especiales. Por ejemplo, para ejecutar una prueba con el nombre MyTestMethod y un valor de cadena "text", use el siguiente filtro:

CLI de .NET
dotnet test --filter "Name=MyTestMethod \(%22text%22\)"

Ejemplos de MSTest

C#
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()
        {
        }
    }
}
Expresión Resultado
dotnet test --filter Method Ejecuta pruebas cuyo FullyQualifiedName contenga Method.
dotnet test --filter Name~TestMethod1 Ejecuta pruebas cuyo nombre contenga TestMethod1.
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 Ejecuta pruebas que están en la clase MSTestNamespace.UnitTest1.
Nota: El valor ClassName debe tener un espacio de nombres, por lo que ClassName=UnitTest1 no funcionará.
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 Ejecuta todas las pruebas excepto MSTestNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Ejecuta pruebas anotadas con [TestCategory("CategoryA")].
dotnet test --filter Priority=2 Ejecuta pruebas anotadas con [Priority(2)].

Ejemplos de uso de los operadores condicionales | y &:

  • Para ejecutar pruebas que tienen UnitTest1 en su FullyQualifiedNameoTestCategoryAttribute es "CategoryA".

    CLI de .NET
    dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
    
  • Para ejecutar pruebas que tienen UnitTest1 en su FullyQualifiedNamey tienen un elemento TestCategoryAttribute de "CategoryA".

    CLI de .NET
    dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
    
  • Para ejecutar pruebas que tienen FullyQualifiedName con UnitTest1y tienen un valor TestCategoryAttribute de "CategoryA"o tienen un elemento PriorityAttribute con una prioridad de 1.

    CLI de .NET
    dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
    

Ejemplos de xUnit

C#
using Xunit;

namespace XUnitNamespace
{
    public class TestClass1
    {
        [Fact, Trait("Priority", "1"), Trait("Category", "CategoryA")]
        public void Test1()
        {
        }

        [Fact, Trait("Priority", "2")]
        public void Test2()
        {
        }
    }
}
Expresión Resultado
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 Ejecuta solo una prueba, XUnitNamespace.TestClass1.Test1.
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 Ejecuta todas las pruebas excepto XUnitNamespace.TestClass1.Test1.
dotnet test --filter DisplayName~TestClass1 Ejecuta pruebas cuyo nombre para mostrar contenga TestClass1.

En el ejemplo de código, los rasgos definidos con claves "Category" y "Priority" pueden usarse para filtrar.

Expresión Resultado
dotnet test --filter XUnit Ejecuta pruebas cuyo FullyQualifiedName contenga XUnit.
dotnet test --filter Category=CategoryA Ejecuta pruebas que tienen [Trait("Category", "CategoryA")].

Ejemplos de uso de los operadores condicionales | y &:

  • Para ejecutar pruebas que tienen TestClass1 en su FullyQualifiedNameo tienen un elemento Trait con una clave de "Category" y el valor de "CategoryA".

    CLI de .NET
    dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
    
  • Para ejecutar pruebas que tienen TestClass1 en su FullyQualifiedNamey tienen un elemento Trait con una clave de "Category" y un valor de "CategoryA".

    CLI de .NET
    dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
    
  • Para ejecutar pruebas que tienen FullyQualifiedName con TestClass1y tienen un elemento Trait con una clave de "Category" y un valor de "CategoryA"o tienen un elemento Trait con una clave de "Priority" y un valor de 1.

    CLI de .NET
    dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1"
    

Ejemplos de NUnit

C#
using NUnit.Framework;

namespace NUnitNamespace
{
    public class UnitTest1
    {
        [Test, Property("Priority", 1), Category("CategoryA")]
        public void TestMethod1()
        {
        }

        [Test, Property("Priority", 2)]
        public void TestMethod2()
        {
        }
    }
}
Expresión Resultado
dotnet test --filter Method Ejecuta pruebas cuyo FullyQualifiedName contenga Method.
dotnet test --filter Name~TestMethod1 Ejecuta pruebas cuyo nombre contenga TestMethod1.
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 Ejecuta pruebas que están en la clase NUnitNamespace.UnitTest1.
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 Ejecuta todas las pruebas excepto NUnitNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA Ejecuta pruebas anotadas con [Category("CategoryA")].
dotnet test --filter Priority=2 Ejecuta pruebas anotadas con [Priority(2)].

Ejemplos de uso de los operadores condicionales | y &:

Para ejecutar pruebas que tienen UnitTest1 en su FullyQualifiedNameo tienen un elemento Category de "CategoryA".

CLI de .NET
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Para ejecutar pruebas que tienen UnitTest1 en su FullyQualifiedNamey tienen un elemento Category de "CategoryA".

CLI de .NET
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"

Para ejecutar pruebas que tienen FullyQualifiedName con UnitTest1y tienen un elemento Category de "CategoryA"o tienen un elemento Property con un valor "Priority" de 1.

CLI de .NET
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"

Para obtener más información, vea Filtro TestCase.

Vea también

Pasos siguientes