es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ejecuta cada prueba en paralelo utilizando xunit.

Tengo el requisito de acelerar mis pruebas de manera significativa.

¿Hay alguna manera de hacer esto con xunit y hacer que las pruebas se ejecuten en paralelo dentro de una clase?

Sé que de manera predeterminada, Xunit no puede ejecutar pruebas dentro de una colección de pruebas en paralelo, pero ¿esto es lo que necesito hacer?

Estoy usando .NET Core 3.1.

Paul.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible acelerar las pruebas utilizando xunit al ejecutarlas en paralelo dentro de una clase. Xunit ofrece pruebas en paralelo integradas, pero por defecto, xunit no ejecuta pruebas dentro de una colección de pruebas. Sin embargo, podemos usar una colección de pruebas que contenga solo una clase y luego habilitar la paralelización para esa colección de pruebas.

    Para habilitar la paralelización para una colección de pruebas, podemos usar la interfaz ICollectionFixture, donde T es una clase en la que queremos ejecutar las pruebas en paralelo. Aquí hay un ejemplo:

    [CollectionDefinition("MyCollection")]
    public class MyCollection : ICollectionFixture<myfixture> { }
    
    [Collection("MyCollection")]
    public class MyTestClass
    {
        // pruebas para esta clase
    }
    
    public class MyFixture
    {
        // código de configuración/destrucción necesario para las pruebas de MyTestClass
    }
    

    En el ejemplo anterior, definimos una colección de pruebas llamada “MyCollection”, que está asociada con la clase MyFixture. La clase MyFixture contiene cualquier código de configuración / destrucción necesario para las pruebas de MyTestClass. La clase MyTestClass está anotada con el atributo [Collection(“MyCollection”)], lo que significa que todas las pruebas en esta clase se ejecutarán usando la instancia MyFixture.

    Para habilitar la paralelización para la colección de pruebas MyCollection, podemos usar la opción de línea de comandos –parallel:

    dotnet test --parallel --test-adapter-path:. -c Release
    

    Esto ejecutará las pruebas en la clase MyTestClass en paralelo, reduciendo significativamente el tiempo necesario para ejecutar todo el conjunto de pruebas.

    En conclusión, podemos usar la función de pruebas en paralelo de xunit y la interfaz ICollectionFixture para acelerar las pruebas al ejecutarlas en paralelo dentro de una clase.

Comments are closed.