prejuicio implícito implicitas implicita explícito ejemplos discriminacion actitudes scala specs2

scala - implícito - Cómo ejecutar especificaciones secuencialmente



ejemplos de implícito y explícito (3)

Quiero crear algunas especificaciones que interactúen con la base de datos.

class DocumentSpec extends mutable.Specification with BeforeAfterExample { sequential def before() = {createDB()} def after() = {dropDB()} // examples // ... }

La base de datos se crea y elimina antes y después de cada ejemplo (que se ejecuta de forma secuencial). Everithing funciona como se espera hasta que solo haya una especificación que funcione con la base de datos. Debido a que las especificaciones se ejecutan en paralelo, interfieren y fallan.

Espero poder evitar esto al dar instrucciones a specs2 para que realicen pruebas con efectos secundarios de forma secuencial, mientras que las pruebas sin efectos secundarios se ejecuten en paralelo. ¿Es posible?


Mientras tanto hay una mejor solución ( http://www.scala-sbt.org/release/docs/Parallel-Execution.html ):

sbt 0.12.0 introduce una infraestructura general para restringir la concurrencia de tareas más allá de las declaraciones de pedido habituales.

Esta configuración ejecutará todas las pruebas secuenciales, también si están en subproyectos:

concurrentRestrictions in Global := Seq( Tags.limit(Tags.CPU, 2), Tags.limit(Tags.Network, 10), Tags.limit(Tags.Test, 1), Tags.limitAll( 15 ) )

No he probado si esto puede ser reemplazado por cada subproyecto, por lo que el subproyecto puede ejecutar sus pruebas en paralelo.


Si desea ejecutar una sola Especificación en especs2 secuencialmente, simplemente agregue sequential llamada de método sequential al comienzo de su Especificación. Por ejemplo:

class MyTest extends Specification { // Set sequential execution sequential // This tests will be executed sequentially "my test" should { "add numbers" in { (1 + 1) should be equalTo 2 } "multiply numbers" in { (2 * 2) should be equalTo 4 } } }

ACTUALIZACIÓN: Como @jsears mencionó correctamente en los comentarios, ¡esto hará que las pruebas se ejecuten secuencialmente en una sola especificación! Otras especificaciones pueden ejecutarse en paralelo.