Orden de las Especificaciones
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 en que el mecanismo de descubrimiento las encuentre.
Esto suele ser aceptable ya que el orden quizás no sea importante para la mayoría de los conjuntos de pruebas, pero si necesitas 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- Este es el valor por defecto. El orden de las specs no está definido y se ejecutarán en el orden en que se descubran en tiempo de ejecución. Por ejemplo, ya sea desde el classpath de la JVM o el orden en que aparecen en los archivos JavaScript.Lexicographic- Las specs se ordenan lexicográficamente.Random- Las specs se ejecutan en un orden aleatorio.Annotated- Las specs se ordenan usando la anotación@Orderañadida a nivel de clase, ejecutándose primero las que tengan el valor más bajo. Las specs sin esta anotación se consideran "últimas" (valor máximo de entero). Esta opción solo funciona en la JVM. Las specs con el mismo valor de orden se ejecutan en el orden en que se descubren.
Ejemplo con anotaciones
Dadas las siguientes specs anotadas con @Order.
@Order(1)
class FooTest : FunSpec() {}
@Order(0)
class BarTest : FunSpec() {}
@Order(1)
class BazTest : FunSpec() {}
class WazTest : FunSpec() {}
BarTest se ejecutará primero, ya que tiene el valor de orden más bajo. FooTest y BazTest se ejecutarán a continuación, ya que tienen los siguientes valores más bajos, aunque ambos tienen el valor 1, por lo que el orden entre ellos no está definido. Finalmente, WazTest se ejecutará al final, ya que no tiene anotación.
Semilla Aleatoria
Cuando utilices el orden de ejecución Random, puedes establecer una semilla para garantizar que siempre se use el mismo orden si es necesario.
class MyConfig : AbstractProjectConfig() {
override val randomOrderSeed = ...
}
Orden Personalizado
También puedes ordenar las specs tú mismo implementando la interfaz SpecExecutionOrderExtension y registrándola en la configuración del proyecto. Si se registra una extensión de este tipo, se ignorará la propiedad specExecutionOrder y se usará la extensión en su lugar.
class MyConfig : AbstractProjectConfig() {
override val extensions = listOf(MySpecExecutionOrderExtension())
}