Compartir a través de


Ejecución de pruebas unitarias seleccionadas

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

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:

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:

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

Ejemplos 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()
        {
        }
    }
}
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 &:

Ejemplos 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()
        {
        }
    }
}
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 FullyQualifiedName o tienen un elemento Trait con una clave de "Category" y el valor de "CategoryA".

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

    dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"
    
  • Para ejecutar pruebas que tienen FullyQualifiedName con TestClass1 y 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.

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

Ejemplos 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()
        {
        }
    }
}
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 FullyQualifiedName o tienen un elemento Category de "CategoryA".

dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

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

dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"

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

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

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

Vea también

Pasos siguientes