scala - sistema - ¿Cómo desactivar la ejecución paralela de pruebas para construcciones multiproyecto?
simatic pcs 7 manual español (5)
Tengo una compilación de proyectos múltiples con pruebas en subproyectos y en un proyecto principal. La compilación se agrega para que el proyecto principal ejecute todas las pruebas en proyectos secundarios.
Lo configuré para que no haya ejecución paralela de pruebas tanto en los subproyectos como en el proyecto principal, a través de
parallelExecution in Test := false
Sin embargo, tengo la molesta sensación de que las pruebas que abarcan varios proyectos se ejecutan en paralelo. En el caso de uno de los subproyectos, esto es un problema porque muta el estado en una base de datos de prueba simultáneamente, lo que hace que la prueba falle.
¿Alguna idea sobre cómo cambiar globalmente de ejecución paralela de pruebas, entre proyectos?
Creo que puede aplicar una configuración en todos los proyectos usando el alcance ThisBuild
, como
parallelExecution in ThisBuild := false
No sé si puede combinar eso con la Test
alcance, pero puede que no sea necesario.
Esto funcionó para mí en 1.1.0:
Test / parallelExecution := false
Otra posibilidad, basada en https://.com/a/27068019/1922026 , es definir un alias de comando en el proyecto raíz:
.settings(addCommandAlias("test", ";s1/test;s2/test;s3/test"): _*)
donde s1, s2 y s3 son los subproyectos. Cuando esté en el proyecto raíz y ejecute "prueba", las pruebas se ejecutarán de forma secuencial y en el orden definido.
Para restringir el número de pruebas que se ejecutan simultáneamente en todos los proyectos, use:
concurrentRestrictions in Global += Tags.limit(Tags.Test, 1)
Ver la documentación de sbt.
Ver discussion
Vea mi respuesta aquí Cómo ejecutar pruebas de subproyectos (incluidos los métodos de configuración) de forma secuencial al realizar pruebas
Hay otra forma de evitar la ejecución paralela. Puedes hacer que las tareas de prueba de los diferentes proyectos dependan entre sí:
test in Project2 := (test in Project2).dependsOn(test in Project1).value
parallelExecution in Test in Project2 := false