Ir al contenido principal
Versión: 5.5.x

Orden de las Especificaciones

[Traducción Beta No Oficial]

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Por defecto, el orden de las clases Spec no está definido. Esto significa que son esencialmente aleatorias, en el orden que el mecanismo de descubrimiento las encuentre.

Esto suele ser suficiente, pero si necesitamos controlar el orden de ejecución de las specs, podemos hacerlo especificando el orden en la configuración del proyecto.

class MyConfig: AbstractProjectConfig() {
override val specExecutionOrder = ...
}

Existen varias opciones disponibles:

  • Undefined - Es el valor por defecto. El orden de las specs no está definido y se ejecutarán según el orden en que se descubran en tiempo de ejecución. Por ejemplo, ya sea mediante descubrimiento en el classpath de JVM o según el orden de aparición en archivos JavaScript.

  • Lexicographic - Las specs se ordenan lexicográficamente.

  • Random - Las specs se ejecutan explícitamente en un orden aleatorio.

  • Annotated - Las specs se ordenan usando la anotación @Order añadida a nivel de clase, ejecutándose primero las de valor más bajo. Las specs sin esta anotación se consideran "últimas". Esta opción solo funciona en JVM. Los empates se resolverán arbitrariamente.

Ejemplo con anotaciones

Dadas las siguientes specs anotadas con @Order.

@Order(1)
class FooTest : FunSpec() { }

@Order(0)
class BarTest: FunSpec() {}

@Order(1)
class FarTest : FunSpec() { }

class BooTest : FunSpec() {}

BarTest se ejecutará primero, ya que tiene el valor de orden más bajo. FooTest y FarTest se ejecutarán a continuación al tener los siguientes valores más bajos, aunque ambos tienen valor 1 por lo que su orden entre ellos es indefinido. Finalmente, BooTest se ejecutará último al carecer de anotación.