Registro de cambios
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
6.0.2 Septiembre de 2025
Cambios
-
Reemplazo de error tipográfico en el mensaje de deprecación de ContainerExtension por @gpopides en #5030
-
Soporte para arrays de primitivos en shouldBeEqualToComparingFields por @AlexCue987 en #5043
-
Mejora de los matchers de recursos y JSON por @sksamuel en #5045
-
Registro de (algunos) cambios rompedores en 6.0 por @TWiStErRob en #5046
-
Listas y mapas en JSON por @AlexCue987 en #5039
-
Reemplazo de prints con logger en el plugin de Gradle por @sksamuel en #5047
-
Adición de test para matchers booleanos por @sksamuel en #5048
-
Corrección del orden de ejecución de InstancePerLeaf por @T45K en #5044
-
Corrección de shouldCompleteWithin que ocultaba errores por @sksamuel en #5049
Nuevos colaboradores
-
@gpopides realizó su primera contribución en #5030
-
@T45K realizó su primera contribución en #5044
5.7.2 Septiembre de 2023
Correcciones
-
Revertido para compilar contra JDK 1.8
-
Eliminada la advertencia de autoscan
5.7.1 Septiembre de 2023
Correcciones
-
Corregida detección de timeout cuando withTimeout envuelve un trabajo bloqueante (#3675)
-
Usar object equals por defecto (#3671)
5.7.0 Septiembre de 2023
Mejoras
-
Refactorización de concurrencia #3623
-
Añadido soporte de Equality a todos los matchers contain* (#3662)
-
Añadido shouldBeEqualUsingFields (#3652)
-
Añadido soporte para tipos nulables en funciones de test (#3665)
-
Composición de Matcher.any (#3664)
-
Conversión de Matcher.all a multiplataforma (#3663)
-
Permitir escaneo de jars anidados mediante configuración (#3644)
-
Vinculación de BlockHoundMode a corrutinas, eliminando restricciones (#3622)
-
Añadida versión en secuencia para monotonic/strictly inc/dec (#3645)
-
Reimplementadas funciones no deterministas (#3597)
-
Añadida advertencia para autoscan #3640
-
Añadido bloque expect para omitir tests (#3596)
-
Añadida bandera includeNonFiniteEdgeCases para arbitrarios double y float (#3638)
-
Arb.offsetDateTime basado en Instant (#3632)
-
Reimplementación de
KProperty0<T>.shouldHaveValuecomo matcher (#3637) -
Añadido soporte adicional para java.time en enlace reflexivo (#3636)
-
Añadidas aserciones para KProperty0 (#3621)
-
Implementación de
Arb.listcon soporte paraArb<IntRange>yArb.intRange(#3618) -
Añadidas opciones de configuración para reintentos (#3600)
-
Implementados hooks beforeInvocation y afterInvocation (#3589)
-
Añadido soporte para
Arb<Date>(#3554) -
Añadido soporte para permutaciones parciales (#3523)
-
Añadido exhaustive enumsExcept (#3552)
Correcciones
-
Corregido orden de callbacks afterXX (#3639)
-
Actualizado manejo de NaN en aserciones (#3661)
-
Invocar beforeSpec solo si se ejecuta un test (#3649)
-
Filtrar éxito en matcher.all (#3646)
-
Añadido allowOutOfOrderCallbacks (#3642)
-
Actualizada documentación para RgxGen #3607
-
Añadido formato see-difference para shouldHaveSingleElement (#3599)
-
Usar spec por defecto para el primer test en InstancePerTest (#3601)
-
Lanzar error si @Order se usa sin especificar orden de ejecución (#3641)
-
feat: matchers de mapas (all o exactly) permiten matchers dinámicos (#3569)
-
Propiedades extra no toleradas con diferente orden de arrays (#3629)
-
Reescribida documentación de System Extensions para mayor claridad (#3630)
-
matchJsonResource debe verificar existencia de archivo (#3634)
-
Corregido enlace reflexivo nulable que no funciona con ciertos tipos (#3635)
-
Corrección del orden de procesamiento de extensiones, priorizando la configuración de casos de prueba (#3613) (#3614)
-
Corrección del reductor de duración para que reduzca correctamente (#3611)
-
Corrección del nombre de withDefaultTimeZone en la documentación (#3615)
-
Reversión de la depreciación de shouldEqualSpecifiedJson. #3543
-
Corrección en la notificación de errores desde BeforeSpec al usar especificaciones InstancePerTest (#3585)
-
Renombrado de Matchers de Data Class a Matchers Compuestos (#3406)
-
Corrección de opción desactualizada en la documentación de jacoco #3539
-
Corrección de TestAbortedException no marcada como Ignorada (#3587)
-
Eliminación de solución alternativa para usar @Language en MPP (#3591)
-
Mejora de documentación sobre Arrow (#3570)
-
Implementación de solución para escenarios sin etiquetas en tiempo de ejecución pero con especificaciones anotadas con @RequiresTag() (#3532)
-
Conversión de NamedTag a data class para incluir equals() (#3579)
-
Adición de índices de elementos en mensajes de fallo de inspectores (#3578)
-
Corrección de CollectingTestEngineListener reteniendo todas las Specs (#3573)
-
Matchers fmap permiten valores nulos (#3568)
-
Corrección de IrLinkageError con K/Js en Kotlin 1.9 (#3557)
-
Corrección de error tipográfico en anotación y añadido enlace a documentación de Spring (#3551)
-
Corrección: adición de char a tipos platformstable (#3536)
-
Actualización del nombre de biblioteca de 'Test containers' a 'Testcontainers' (#3545)
-
Corrección de prueba fallida tras commit anterior
-
Corrección de anotación documentada como
@RequireTagsque debe ser@RequiresTag(#3530) -
Corrección de fallo en enlace reflexivo con clases selladas que contienen miembros object (#3529)
-
Adición de changelog para v5.6.2 (#3519)
Gracias a todos los colaboradores desde el lanzamiento de la versión 5.6.0
-
AJ Alt
-
Alexey Yakovlev
-
Alphonse Bendt
-
aSemy
-
Ayushi Gupta
-
Charles Korn
-
Claudenir Freitas
-
Cory Thomas
-
David Weber
-
Dmitry Spikhalskiy
-
Emil Kantis
-
Erik Huizinga
-
hughlunnon
-
Israel José Boiko
-
Just.Viktor
-
Karl-Philipp Richter
-
ktrueda
-
Leonardo Colman Lopes
-
Łukasz Pięta
-
Łukasz Wasylkowski
-
Matej Drobnič
-
Mikael Elm
-
Mitchell Yuwono
-
OliverO2
-
Paolo Simonazzi
-
Rafał Prominski
-
SEONGILKIM
-
sksamuel
-
Thom
-
Viktors Garkavijs
-
Vladislav Krasov
-
Zak Henry
5.6.2 Mayo 2023
Aserciones
- Se añade el matcher shouldHaveSameInstantAs para OffsetDateTime. Corrige #3488 por @Kantis en https://github.com/kotest/kotest/pull/3501
Pruebas basadas en propiedades
-
Soluciona un problema con pruebas basadas en propiedades en plataformas Apple #3506
-
Revierte el comportamiento de
Arb.string()para generar solo cadenas con caracteres ASCII imprimibles- La versión 5.6.0 lo cambió para incluir caracteres de control, ver #3513 para más detalles
-
Corrige gran asignación de memoria para Arb de OffsetDateTime sin argumentos por @rescribet en https://github.com/kotest/kotest/pull/3491
-
Soluciona casos extremos en Arb.map por @myuwono en https://github.com/kotest/kotest/pull/3496
Documentación
-
Actualiza writing_tests.md por @erikhuizinga en https://github.com/kotest/kotest/pull/3497
-
Actualiza documentación de shouldBeEqualToComparingFields por @ktrueda en https://github.com/kotest/kotest/pull/3416
Otros
- Compila biblioteca Kotlin/Native para ARM64 en Linux por @charleskorn en https://github.com/kotest/kotest/pull/3521
⚠️ Comportamiento revertido de Arb.string()
En Kotest 5.6.0, Codepoint.ascii() se modificó para incluir un rango más amplio de caracteres ASCII, y se introdujo Codepoint.printableAscii() con el rango histórico que usaba Codepoint.ascii().
Arb.string() estaba usando Codepoint.ascii() como valor predeterminado para generar caracteres. Esto causó problemas a algunos usuarios, por lo que decidimos revertir Arb.string() al comportamiento histórico cambiando el valor predeterminado al nuevo Codepoint.printableAscii().
Esperamos que esto no cause problemas. Si los causa, puedes volver al comportamiento de 5.6.0 ~ 5.6.1 usando explícitamente Codepoint.ascii().
Si añadiste un uso explícito de Codepoint.printableAscii() para solucionar el problema, puedes eliminarlo de forma segura a partir de Kotest 5.6.2.
Nuevos colaboradores
-
@rescribet realizó su primera contribución en https://github.com/kotest/kotest/pull/3491
-
@ktrueda realizó su primera contribución en https://github.com/kotest/kotest/pull/3416
-
@erikhuizinga realizó su primera contribución en https://github.com/kotest/kotest/pull/3497
Registro completo de cambios: https://github.com/kotest/kotest/compare/v5.6.1...v5.6.2
5.6.1 Abril 2023
** Esta versión principalmente añade dependencias klib faltantes para iOS **
Mejoras
- Añade anotación de lenguaje a matchers JSON (#3487)
5.6.0 Abril 2023
** Nota: esta versión requiere como mínimo Kotlin 1.8.0. ** ** Si usas < 1.8.0 puedes seguir utilizando Kotest 5.5.x **
Cambios importantes:
-
Las funciones relacionadas con
ConstantNowse han movido a un nuevo módulo llamadoio.kotest:kotest-extensions-now(recuerda añadir el sufijo -jvm para Maven)- Añade este módulo como dependencia para seguir usando
withConstantNow
- Añade este módulo como dependencia para seguir usando
-
Eliminada la lógica de verificación de Iterable de IterableEq (#3420)
Correcciones
-
Extensión BlockHound: Corrección del manejo de tests anidados (#3454) (#3456)
-
fix(JunitXmlReporter): resuelve correctamente rutas con directorios irrelevantes (#3479)
-
Corrección de
Codepoint.ascii()para que devuelva caracteres ASCII imprimibles arbitrarios (#3429) -
Corrección de la publicación de BOM para incluir artefactos -jvm. Soluciona #3417
-
Reimplementación de la anotación de inyección de idioma (#3397)
-
Soporte para UUID, Path y file como identificadores estables en JVM (#3472)
Mejoras
-
Actualización a Kotlin 1.8 (#3468)
-
Adición de generadores para cadenas en mayúsculas/minúsculas (#3402)
-
Exposición de semilla aleatoria en contexto de propiedades (#3469)
-
Visualización del tipo al fallar en comparaciones numéricas o por defecto (#3395)
-
Acceso al ámbito de fondo mediante extensión (#3315)
-
'assertSoftly' y 'all' implican clue (#3425)
-
Mejora de reutilización en afirmaciones Json (#3438)
-
Adición de shouldContainAllIgnoringFields (#3394)
-
Exposición de specs descubiertos como TestDescriptors durante el descubrimiento y soporte para IDs únicos (#3461)
-
Soporte para anotaciones de superclase al decidir si una clase debe estar aislada (#3441)
-
Obsoleción de matchers Json antiguos (#3474)
-
Traslado de constant now a nuevo módulo; actualización de junit a 1.8.2 (#3470)
-
Adición de @RequiresPlatform (#3475)
-
Adición de shouldBeEqual (#3477)
-
Exposición de testCoroutineScheduler para MPP (#3471)
-
Implementación de shouldThrowSoftly (#3476)
-
Adición de Exhaustive para permutaciones de listas (#3473)
-
Cadena shouldBe/shouldNotBe (#3186)
-
Las etiquetas definidas en spec deben aplicarse antes de los listeners (#3189)
-
Uso de GlobalArbResolver para Arbs reflectivos (#3455)
-
Arb de propiedades para duración (#3227)
-
Adición de edgecase 'emptyMap' a Arb.map() (#3447)
-
Restauración de antiguas funciones externas de prueba mocha/jasmine
-
Eliminación del modo de concurrencia de la documentación (#3434)
-
Adición de despliegues snapshot para tvos sim / watchos sim
-
Incremento de aridad máxima en pruebas de propiedades checkall a 22 (#3382)
-
Soporte global para coroutineTestScope (#3383)
Agradecimiento a todos los colaboradores desde el lanzamiento de la versión 5.5.0:
-
Alex Decker
-
Alexey Genus
-
Alphonse Bendt
-
Andrey Kozlov
-
AnouarD
-
Anouar Doukkali
-
Arvind Arikatla
-
aSemy
-
Bartłomiej Zaręba
-
eduardbosch-jt
-
Emil Kantis
-
Grégory Lureau
-
Ivan “CLOVIS” Canet
-
IvanPavlov1995
-
Jama Mohamed
-
Jean-Michel Fayard
-
julian abiodun
-
Julian K
-
Leonardo Colman Lopes
-
Łukasz Pięta
-
Marc Philipp
-
Martin Caslavsky
-
Matej Drobnič
-
Mitchell Yuwono
-
OliverO2
-
Osip Fatkullin
-
ov7a
-
Pankaj
-
Ryan Lewis
-
RyuNen344
-
Sangboak Lee
-
Sergey Volkov
-
Shervinox
-
sksamuel
-
Stefanqn
-
Travis
-
Varun Arora
-
Vinícius Hashimoto
-
Vladimir Sitnikov
-
Xavier Oliver
-
Zak Henry
5.5.5 Febrero 2023
-
Soporte global para coroutineTestScope (#3383)
-
Mensajes de tolerancia mejorados para double y float (#3355)
-
Pruebas de datos anidadas no se muestran como tal en Intellij #3341
-
Corrección al escribir seeds cuando el nombre de prueba contiene dos puntos en Windows (#3304)
-
withClue() falla con EmptyStackException si una corrutina cambia de hilo #2447
-
Uso de TestDispatcher en callbacks beforeInvocation (#3363)
-
Mejora en comprobación de cobertura contra pares proporcionados (#3344)
-
Dependencia transativa vulnerable en Kotest runner junit5 jvm CVE-2021-29425 #3364
-
Corrección de matchers de secuencias para secuencias restringidas (#3336)
-
Impresión de ruta completa en JunitXmlReporter con useTestPathAsName activado (#3347)
-
Soporte para lambdas { } como pistas lazy (#3348)
-
Uso de 'inyección de lenguaje' en aserciones para mejor soporte en IntelliJ #2916
-
Eliminada ubicación por defecto para htmlReporter usando valor predeterminado del constructor (#3306)
-
Arb.bigDecimal debe generar decimales que terminen con todo tipo de dígito terminal #3282
-
Comprobación de enums usando método equals en lugar de escanear propiedades (#3291)
-
Añadido soporte para BlockHound (#3308)
-
Matchers devuelven
this(#2945) -
Añadidos matchers shouldMatchResource y shouldNotMatchResource (#2945)
-
Añadido matcher
matchExactlypara Maps #3246 -
Corrección al volcar configuración con systemProperty=true (#3275)
-
Devolución del fallo original cuando ErrorCollector solo recoge un fallo (#3269)
5.5.4 Noviembre 2022
- Corrección al combinar filtros Gradle (se aplicaba
ANDincorrectamente en lugar deOR) (#3277)
5.5.3 Octubre 2022
- Actualizada versión de JUnit de 5.7.2 a 5.8.2.
Kotest ahora requiere versión runtime de JUnit mínimo 5.8.x
Nota: Si tu build carga tanto JUnit 5.7 como 5.8 en el classpath en orden incorrecto, podrías ver problemas con ClassOrderer no encontrado. Asegúrate de cargar solo JUnit 5.8+
5.5.2 Octubre 2022
-
Correcciones en filtros de pruebas Gradle, por @myuwono (#3257)
-
Configuración de herencia de tags ahora disponible en AbstractProjectConfig
5.5.1 Octubre 2022
- Corregido problema donde pruebas se saltaban al filtrar por nombre completo de spec
5.5.0 Octubre 2022
Correcciones
-
Solucionado problema usando plugin de compilación con Kotlin 1.7.20 (#3220)
-
Permitido registro global de arbs personalizados mediante
GlobalArbResolver(#3185) -
Corrección en pruebas de datos para todos los ámbitos de
BehaviorSpec(#3222) -
Corrección de mapas anulables en pruebas de datos (#3218)
-
Detección de configuración de proyecto tras aplicar propiedades del sistema (#3204)
-
Soporte para
enabledOrReasonIfenFunSpecanidados -
Mensaje de error mejorado al pasar lista vacía en
Arb.of(#3195) -
Error al usar callback
afterEachtras registro de pruebas (#3191) -
Mejora en mensajes de error para
containExactlycon conjuntos inestables (#3194) -
Encapsulación de InvalidPathException en AssertionError para rutas JSON inválidas (#3147)
Mejoras
-
Implementación de extensiones montables perezosas (#3187)
-
Impresión clara de enteros sin signo (#3149)
-
Nuevo matcher
shouldBeCloseTo(#3181) -
Matchers regex:
shouldMatch,shouldMatchAll,shouldMatchAny -
Soporte para comodines en el lanzador (#3200)
-
Corrutinas de prueba en K/N (#3219)
-
Control de herencia para
@Tags(#3199) -
Publicación de catálogo de versiones para Gradle (#3171)
-
Comodines prefijos en selectores --test de Gradle (#3190)
-
Matchers mejorados para colecciones únicas (#3188)
-
Helpers para triples cartesianos con
Exhaustive(#3174) -
Propiedad configurable para versión del plugin de compilación (#3168)
-
Impresión clara de enteros sin signo (#3149)
Gracias a todos los colaboradores desde el lanzamiento de la versión 5.4.0:
-
Alex
-
aSemy
-
ataronet
-
Charles Korn
-
Emil Kantis
-
Jaehyun Park
-
James Baker
-
Jinseong Hwang
-
Kevin Woodland
-
Leonardo Colman
-
Michael Sewell
-
Mitchell Yuwono
-
Nikunj Yadav
-
Prat
-
Rasmus V. Plauborg
-
sksamuel
-
YongJoon Kim
5.4.2 Agosto 2022
-
Corrección en ejecución de pruebas para targets nativos en Kotlin 1.7+ (#3107)
-
shouldContainJsonKeydebe devolver true para claves con valores nulos (#3128)
5.4.1 Julio 2022
Correcciones
- Solución de regresión que causaba
NoSuchMethodErroren la extensión Spring de Kotest
5.4.0 Julio de 2022
Correcciones
-
Solucionado problema con el modo de aislamiento cuando hay nombres duplicados (#3071)
-
Permitir que
Arb.bindvincule directamente tipos sellados, enumerados y privados (#3072) -
Corregir
kotest.propertiespara que se aplique antes de los tests #3087 -
Solucionado que
shouldHaveSameContentAsno cerraba los lectores (#3091) -
Corrección en matchers de tolerancia para valores negativos (#3096)
-
Ajustado mensaje de advertencia para que coincida con el valor de enumeración (#3067)
-
Solucionados fallos de compilación en proyectos Kotlin/Native que usan Kotlin 1.7 y el plugin Gradle de Kotest (#3073)
-
Corregida descripción del arb harryPotterCharacter (#2963)
Características
-
Soporte para persistir y reutilizar semillas en pruebas de propiedades #2967
-
Se ha añadido
shouldMatchAlla Maps donde cada valor es una función que contiene aserciones #3065 -
shouldBeEqualToComparingFieldsahora permite configurar clases que requieren usarshouldBepara igualdad, en lugar deequalsconvencional -
Añadidos arbs para
ZoneId,ZonedDateTimeyOffsetDateTime(#3113) -
Implementación de Arbitrary para
YearMonth(#2928) -
Hacer que
arb.orNullproporcione una reducción a null (#2975) -
Habilitar compilación de targets nativos para kotest-assertions-json (#3021)
-
Validación de tamaño en Arrays JSON (#2974)
-
Añadida razón opcional a
@Ignored(#3030) -
Establecer retención en tiempo de ejecución para el marcador dsl (#3038)
-
Añadido reductor para Sets (#3045)
Características y cambios experimentales
-
Se han añadido Supuestos a las pruebas de propiedades.
-
Se ha añadido generación de Estadísticas a las pruebas de propiedades.
-
Las aserciones de arrays en esquemas JSON ahora soportan
minItems,maxItemsyuniqueItems#3026 -
(BREAKING) Modificado el contrato del DSL de esquema JSON para requerir propiedades por defecto;
requiredha sido cambiado aoptional, con false como valor predeterminado.
Desaprobación
- Desaprobado el
shouldBeEqualToComparingFieldsexistente en favor de un nuevo matchershouldBeEqualToComparingFieldsque permite configurar el comportamiento mediante la claseFieldsEqualityCheckConfig(#3034)
Gracias a todos los colaboradores desde el lanzamiento de la versión 5.3.0:
-
Alphonse Bendt
-
Andrey Bozhko
-
aSemy
-
Ashish Kumar Joy
-
blzsaa
-
Charles Korn
-
Cory Thomas
-
Emil Kantis
-
Erik Price
-
Francesco Feltrinelli
-
Javier Segovia Córdoba
-
Jim Schneidereit
-
Jordi
-
Norbert Nowak
-
Roland Müller
-
Shervinox
-
sksamuel
-
Tim van Heugten
-
YongJoon Kim
-
Zvika
5.3.2 Junio 2022
Correcciones
- Soluciona problema del plugin de compilación con Kotlin/Native usando Kotlin 1.7, incidencia #3060
5.3.1 Junio 2022
Correcciones
- Soporte para Kotlin 1.7
5.3.0 Mayo 2022
Correcciones
-
El modo "fail fast" debe anidarse a cualquier nivel #2773
-
Corrige que las descripciones de contenedores repetidos interrumpan la ejecución #2884
-
Corrige generación de código JS para 1.6.21 usando main (#2947)
-
AbstractProjectConfig no muestra displayFullTestPath #2941
Características
-
Soporte para filtros de métodos de clase en Gradle (#2954)
-
Ofrece modo coroutines runTest (#2950)
-
Añadido matcher sortedBy (#2944)
-
Vinculación automática de enumeraciones. Cierra #2937
-
Facilita la configuración de opciones mediante variables de entorno, soportando también nombres con guiones bajos en lugar de puntos (#2925)
-
Los matchers endsWith y startsWith admiten expresiones regulares (#2892)
Gracias a todos los colaboradores desde la versión 5.2.0:
-
Ashish Kumar Joy
-
Charles Korn
-
coffee-and-tea
-
dependabot[bot]
-
Emil Kantis
-
Goooler
-
Imran Malic Settuba
-
Jim Schneidereit
-
Łukasz Pięta
-
Marcin Zajączkowski
-
Michał Gutowski
-
Mitchell Yuwono
-
Naveen
-
Niklas Lochschmidt
-
Norbert Nowak
-
Rüdiger Schulz
-
sksamuel
-
Vitor Hugo Schwaab
5.2.3 Abril 2022
Correcciones
-
Actualización para corregir error con kotlinx-coroutines 1.6.1 (#2912)
-
Corrige que el Matcher haveElementAt lance ArrayIndexOutOfBoundsException (#2895)
5.2.2 Marzo 2022
Correcciones
-
Ajuste de configuración del plugin Gradle PIT (#2903)
-
Implementación de trampolines para flatmap, map, filter y merge (#2900)
-
Corrige que Arb.map respete el parámetro minSize tanto en generación como en reducciones (#2890)
-
Se hizo isOrderedSet específico de plataforma para permitir eq con TreeSet. Soluciona #2879
-
Corrige casos extremos en negativeFloat y positiveFloat (#2880) Mitchell Yuwono* 16 Mar 2022, 21:56 b40de793
-
Corrige fallo en shouldBeEqualToComparingFields cuando campos anidados contienen null (#2874)
Características
-
Implementación de ShouldThrowWithMessage (#2847)
-
Implementación de inspectores para CharSequence (#2886)
5.2.1 Marzo 2022
Correcciones
-
Corrige una regresión en 5.2.0 que causaba error al acceder al ámbito raíz desde el ámbito de prueba.
-
Definir pruebas raíz durante la ejecución de pruebas anidadas ahora genera error correctamente. (2870)
5.2.0 Marzo 2022
Correcciones
-
AnnotationSpecno admite funciones suspend @Before (2868) -
Corregido el ámbito de dependencia para RgxGen en pruebas de propiedades (2800)
-
El generador BigDecimal podría devolver casos extremos fuera de los límites min/max (2834)
-
Corrige que el ordenador aleatorio de especificaciones cree comparadores inválidos (2840)
-
Corrige interferencia entre
withClueyassertSoftlycon corrutinas concurrentes (2791) -
Corrige el manejo de casos extremos en comparaciones numéricas JSON laxas (2793)
-
Corrige group id para el módulo kotest assertion compiler (2787)
-
Implementa solución temporal para problema donde no se ejecutan pruebas con nuevo modelo de memoria Kotlin/Native (2812)
Funcionalidades y mejoras
-
Se añadió inspector
forSingley matchersmatchEach,matchInOrderymatchInOrderSubset(2695) -
Se añadieron matchers
shouldBeJsonObjectyshouldBeJsonArray(2861) -
Ignora selectores JUnit UniqueId para mejor interoperabilidad con otros motores (2862)
-
Componer matchers fácilmente (2864)
-
Hacer configurable la longitud del fragmento de colección incluido en errores de aserción (2836)
-
Conversión inteligente de
shouldBeSuccessyshouldBeFailure(2853) -
Eliminar valores predeterminados inconsistentes de exceptionClass en eventually (2831)
-
Hacer recursivo
shouldBeEqualToComparingFields(2833) -
Añadir
blockingTesta las opciones de configuración en FreeSpec 2805 (2807) -
Añadido contrato EqualsVerifier para
shouldBeEqualTopara mayor personalización (2795) -
Añadir
containExactlyque acepta un vararg de pares (2781) -
Actualizar Test Containers para soportar múltiples scripts de inicialización (2811)
Cambios Importantes
- Prohibir el uso de métodos de ámbito raíz dentro del ámbito de contenedor (2870)
Gracias a todos los colaboradores:
-
Ashish Kumar Joy
-
BjornvdLaan
-
Charles Korn
-
Christoph Sturm
-
Emil Kantis
-
Imran Malic Settuba
-
Ing. Jan Kaláb
-
inquiribus
-
Kacper Lamparski
-
KIDANI Akito
-
Leonardo Colman
-
Louis CAD
-
Łukasz Pięta
-
luozejiaqun
-
Mervyn McCreight
-
Mitchell Yuwono
-
OliverO2
-
scottdfedorov
-
Sebastian Schuberth
-
sksamuel
-
Sondre Lefsaker
-
Sunny Pelletier
-
Zak Henry
5.1.0 Enero 2022
Correcciones
-
La prueba falla porque el lado izquierdo de shouldBe es List y el derecho es un Iterable personalizado #2746
-
La extensión JUnit XML genera XML no válido #2756
-
La no nulabilidad se pierde con el matcher shouldBeSuccess #2759
-
Arb.bind debería detectar nulables e inyectar valores nulos #2774
Funcionalidades y mejoras
-
Actualizar corrutinas a la versión final 1.6 #2768
-
En el encogimiento de cadenas de Arb, el carácter más simple siempre es 'a' sin importar el punto de código #2646
-
Añadir reloj de prueba mutable #2655
-
Inspectores para mapas #2656
-
Añadir función de inversión condicional con parámetro para invertir bajo condiciones #2658
-
Implementar fallo rápido para todo el proyecto #2684
-
Permitir establecer la semilla usada para aleatorizar el orden de especificaciones #2698
-
Opción para fallar la compilación si se establece una semilla en pruebas de propiedades #2701
-
El Arb de LocalDateTime debería aceptar fechas-hora como valores mínimo y máximo #2704
-
Propiedad de sistema para desactivar el escaneo de configuración #2766
-
Propiedad de sistema para la clase de configuración #2767
Gracias a todos los colaboradores:
-
aSemy
-
Ashish Kumar Joy
-
Bart van Helvert
-
Benjamin Shults
-
Charles Korn
-
Emil Kantis
-
Imran Settuba
-
inquiribus
-
Łukasz Pięta
-
Max Rumpf
-
Ricardo Veguilla
-
Sebastian Schuberth
-
Simon Vergauwen
-
sksamuel
5.0.3 Diciembre 2021
Correcciones
-
ShouldContainExactlyTest falla en Windows debido a errores en aserciones con separadores de ruta #2732
-
shouldBe entra en bucle infinito al generar mensajes de diff para data classes con referencias cíclicas #2611
-
Problemas al usar aserciones globalAssertSoftly bug framework #2706
-
Corregir problemas en shouldStartWith y shouldEnd #2736
5.0.2 Diciembre 2021
Correcciones
-
Corregida la notificación errónea de timeouts en pruebas #2714
-
El listener de Team City no debe ser lazy para todas las pruebas #2707
-
Corregir filtro de rutas de prueba vs espacios en nombres de pruebas #2725
-
Soporte para nulos en pruebas basadas en datos #2718
-
Corrige que las pistas no funcionan cuando el valor esperado o real es nulo #2720
-
Cambiados los timeouts predeterminados para usar duraciones (más claro)
-
Corregido que los contenedores after/before no funcionaban como extensiones #2721
-
Compartir TestCoroutineDispatcher en pruebas anidadas #2703
-
Corrige contextos en FunSpec cuando las pruebas están deshabilitadas #2710
-
Retornar ComparableMatcherResult en aserciones JSON #2620
-
Eliminar @ExperimentalTime donde Duration es estable #2708
-
Eliminar solución alternativa de Arb#long para valores generados aleatoriamente incorrectos #2700
5.0.1 Noviembre 2021
Correcciones
-
Los nombres para mostrar ahora incluyen afijos cuando están configurados
-
Corregido WordSpec para funcionar con el plugin de IntelliJ en contextos anidados
-
Añadido override de testCoroutineDispatcher a la configuración del proyecto #2693
-
Corregida condición de carrera en el compilador multiplataforma #2687
-
Regresión: Tiempos de prueba reportados como cero en JUnit #2686
-
Volcar automáticamente la salida de depuración de corrutinas tras finalizar la prueba #2680
-
Los matchers JSON no ofrecen "Haz clic para ver la diferencia"
4.6.4 Noviembre 2021
Correcciones
-
Corrige
ShouldContainExactlypara colecciones que contienen arrays de bytes (#2360) -
Corrige selección aleatoria de nanosegundos en InstantRange cuando los segundos igualan los límites (#2441)
-
Corrige recursión infinita en
checkAllde 2 aridades (#2510) -
Corrige índice incorrecto en forAll4 (#2533)
-
Corrige variables de entorno vacías en
withEnvironmenten Linux (#2615) -
Cambia should por
shouldNotenshouldNotBeEqualToComparingFieldsExcept(#2637) -
Elimina Try anidado accidentalmente (#2669)
5.0.0 Noviembre 2021
Kotlin 1.6 es ahora la versión mínima requerida
Consulta el artículo detallado sobre características y cambios en 5.0 aquí
Cambios importantes y métodos eliminados
-
El soporte para JavaScript ha sido rediseñado para usar el compilador IR. El compilador legacy ya no es compatible. Si ejecutas pruebas en JS legacy, deberás seguir usando Kotest 4.6.x o probar solo IR.
-
Arb.valuesha sido eliminado. Estaba obsoleto desde 4.3 en favor deArb.sample. Actualiza los arbs personalizados que sobrescriban este método. Los que usan buildersarbitraryrecomendados no se ven afectados. #2277 -
El motor ya no registra configuraciones en consola durante el inicio por defecto. Activa con la propiedad de sistema
kotest.framework.dump.configestablecida a true. #2276 -
TextContextha sido renombrado aTestScope. Este es el tipo receptor usado en lambdas de prueba. Solo afecta si tienes funciones de extensión personalizadas que usanTestContext. -
Las funciones experimentales de pruebas de datos añadidas en 4.5 se han movido al módulo
kotest-framework-datatesty son estables. -
equalJsonañade un parámetro para soportar la nueva aserciónshouldEqualSpecifiedJson -
Cambiado
PostInstantiationExtensionpara ser suspendible -
ConstructorExtensionahora es exclusivo de JVM. Anteriormente estaba disponible en otras plataformas pero no tenía efecto fuera de JVM. -
Al usar inspectores, se ha eliminado la propiedad de sistema obsoleta
kotlintest.assertions.output.max. Fue reemplazada porkotest.assertions.output.maxen la versión 4.0. -
Se ha eliminado la configuración obsoleta
isolationen Specs. UtiliceisolationMode. -
Se ha trasladado
assertionModedeTestCasea la configuración del caso de prueba. -
La extensión
RuntimeTagExtension(anteriormente obsoleta) ha sido reactivada pero trasladada a un nuevo paquete. -
Se han eliminado los matchers de canales obsoletos
shouldReceiveWithinyshouldReceiveNoElementsWithin.
Correcciones
Marco de pruebas
-
Soporte para anotaciones compuestas y caché de búsquedas de anotaciones #2279
-
Corrección de la evaluación perezosa en autoClose #2395
-
Eliminación de puntos en nombres de pruebas JS #2483
-
Escape de dos puntos para salida en TeamCity #2445
-
Eliminación recursiva de directorios temporales al usar
tempdir#2227
Aserciones
-
Los matchers de cadenas ahora funcionan también con CharSequence donde aplica #2278
-
withEnvironmentfalla con variables de entorno vacías en Linux #2615 -
Corrección de ShouldContainExactly para colecciones con arrays de bytes #2360
-
2412 Hace que Sequence.containExactly funcione para secuencias de un solo paso #2413
-
Corrección de withClue y assertSoftly para corrutinas que cambian de hilo #2447
-
Permitir añadir pistas (clues) a timeouts #2230
-
Posible confusión entre sobrecargas de shouldContainExactlyInAnyOrder #2587
-
shouldBeEqualToComparingFields maneja arrays y propiedades calculadas #2475
Pruebas basadas en propiedades
-
Corrección de Arb.long/ulong que generaba valores fuera de rango #2330
-
Corrección de Arb.localDate para considerar porción fecha/mes del minDate #2370
-
Actualización de FloatShrinker y DoubleShrinker para usar recuento de bits de mantisa como medida de complejidad #2379
-
Corrección de error/2380: reducciones (shrinks) en filtro de Arb #2434
-
Parámetro de iteraciones en PropTestConfig no se respetaba #2428
-
Corrección de recursión infinita en checkAll de aridad 2 #2510
-
Corrige índice incorrecto en forAll4 #2533
-
StackOverflow al usar checkAll #2513
-
Mejora rendimiento de Arb.uuid mediante caché de instancias RgxGen para reutilización #2479
-
Módulo de propiedades: Corrección de mutación global en PropertyTesting para Kotlin/Native #2469
-
Añade caso extremo de BigDecimal para discrepancia entre equals y compareTo #2403
-
Corrige selección aleatoria de nanosegundos en InstantRange cuando segundos coinciden con extremos del rango #2441
Características
Marco de pruebas
-
Se ha añadido soporte para Javascript IR.
-
Se ha añadido soporte para pruebas nativas.
-
Opción de configuración para habilitar depuración de corrutinas
-
Opción de configuración para habilitar TestCoroutineDispatchers en pruebas.
-
Pruebas no finalizadas deben generar error #2281
-
Añadida opción para fallar ejecución si no hay pruebas ejecutadas #2287
-
Añadido
@RequiresTagpara mejorar capacidad de exclusión de especificaciones #1820 -
Añade interfaz fun a EnabledCondition #2343
-
En Configuración de Proyecto,
beforeAll/afterAllestán obsoletos; se añadenbeforeProject/afterProject(funciones suspend) #2333 -
projectContextdisponible como valor de extensión en lambdas de prueba para acceso al estado del motor. -
Añadido módulo independiente para que herramientas puedan lanzar Kotest #2416
-
Módulo
kotest-framework-datatestpublicado para todos los destinos -
Marco soporta ahora tiempo de espera para todo el proyecto #2273
-
Nuevo punto de extensión ProjectExtension añadido.
-
Permite registrar extensiones mediante anotación
@ApplyExtension#2551 -
Añade logging a ámbitos de prueba #2443
-
Añadido
DisplayNameFormatterExtensionpunto de extensión #2507 -
Añade opción de configuración para enviar rutas completas de nombres de prueba a JUnit 5 #2525
-
Se ha añadido soporte para @Nested en AnnotationSpec #2367
-
Se han añadido propiedades del sistema para filtrar tests y especificaciones #2547
-
Debe producirse un error cuando los tests contenedores no incluyen un test anidado #2383
Aserciones
-
Devuelve el valor resultante del bloque de función en
shouldCompleteWithin#2309 -
Se ha añadido
shouldEqualSpecifiedJsonpara comparar estructuras JSON en un subconjunto de claves (especificadas) #2298 -
shouldEqualJsonahora soporta números de alta precisión #2458 -
Se ha añadido
shouldHaveSameStructureAsa los matchers de archivos -
Se ha añadido
shouldHaveSameStructureAndContentAsa los matchers de archivos -
Los inspectores ahora son inline y pueden contener funciones suspendidas #2657
-
String.shouldHaveLengthBetweenahora acepta rangos #2643 -
La aserción
beOneOfahora indica qué valor faltaba #2624 -
Los matchers de cadenas ahora funcionan con cualquier
CharSequence#2278 -
Se ha añadido el matcher
shouldThrowMessage#2376 -
Se han añadido matchers de tolerancia porcentual #2404
-
Se han añadido matchers NaN para Float #2419
-
Se han reemplazado matchers eager por sus equivalentes lazy #2454
-
Comparación de literales JSON en modo estricto #2464
-
Se han añadido matchers para JSON vacío #2543
-
Se ha añadido un resultado de matcher comparable y aplicado a
shouldContainExactly#2559 -
Se ha actualizado
iterables.shouldContainpara devolver el receptor y permitir encadenamiento -
Se han añadido alias para inspectores #2578
-
Los inspectores devuelven la colección para permitir encadenamiento #2588
-
Desactivación de diff de cadenas en IntelliJ #1999
-
Se ha añadido
CompareJsonOptionspara mayor control al comparar JSON #2520 -
Soporte para ignorar claves desconocidas en aserciones JSON #2303
-
Se ha añadido soporte para objetivos Linux ARM64 y macOS ARM64 (Silicon). #2449
Pruebas basadas en propiedades
-
Cambio de usos de Char.toInt() a Char.code desde Kotlin 1.5. Migración de puntos de código al objeto compañero Codepoint. #2283
-
Generex ha sido reemplazado por Rgxgen #2323
-
Mejora en la nomenclatura de funciones de Arb #2310
-
Mejora en la consistencia de Arb.primitive #2299
-
Añadidas variantes inclusivas de cero para
Arb.ints#2294 -
Añadidos tipos sin signo para Arb #2290
-
Añadido Arb para direcciones IP V4 #2407
-
Añadido Arb para puntos de código hexadecimales #2409
-
Añadido constructor Arb de continuación que permite usar Arb de forma similar a comprensiones de listas. #2494
-
Añadido
Arb.zipcomo alias deArb.bind#2644 -
Añadidos arrays primitivos a Arb #2301
-
Generador de ubicaciones geográficas mejorado #2390
-
Corrección en Arb de LocalDate que generaba fechas incorrectas fuera de restricciones #2405
-
Añadido zip para Exhaustive #2415
-
Añadidos helpers de pares cartesianos para Exhaustive #2415
-
Añadido
Arb.distinctcon capacidad de terminación #2262 -
Añadido Arb para zonas horarias #2421
-
Añadidos clasificadores automáticos #2267
-
Se añadieron arity8 y arity9 forall para pruebas con tablas #2444
-
Permitir configuración global de semilla. Sincronización de valores por defecto. #2439
-
Soporte para clases de datos complejas en
Arb.bind#2532 -
Reducción de casos al usar
Arb.bind#2542 -
Introducción de restricciones para pruebas de propiedades #2492
-
Las pruebas de propiedades deben usar bind como valor por defecto para clases de datos #2355
-
Reductor de dobles independiente de plataforma #2517
-
Arb.pairdebe devolverArb<Pair<K, V>>#2563 -
Se ha añadido soporte para objetivos Linux ARM64 y macOS ARM64 (Silicon). #2449
Deprecaciones
-
CompareMode/CompareOrderparashouldEqualJsonha quedado obsoleto en favor decompareJsonOptions { } -
TestStatusha quedado obsoleto yTestResultse ha rediseñado como un ADT. Si realizabas pattern matching enTestResult.status, ahora puedes hacerlo directamente en la instancia del resultado. -
val namedentro deListenerha quedado obsoleta. Esta propiedad permitía nombres únicos personalizados para errores en callbacks before/after. El framework ahora garantiza nombres únicos automáticamente, haciendo innecesaria esta propiedad. -
SpecExtension.intercept(KClass)ha quedado obsoleto en favor deSpecRefExtensionySpecExtension.intercept(spec). El método deprecado tenía comportamiento ambiguo con IsolationMode que creaba múltiples instancias de specs. Los nuevos métodos garantizan ejecución precisa. -
El objeto global
configurationha quedado obsoleto como primer paso para eliminar esta variable global. El método preferido para configuración sigue siendo ProjectConfig, detectado en todas las plataformas (JVM, JS y Native). -
SpecInstantiationListenerha quedado obsoleto en favor deInstantiationListenereInstantiationErrorListener, que soportan corrutinas en callbacks.SpecInstantiationListeneres un remanente precorrutinas y se eliminará en futuras versiones. -
El método
listenerspara añadir listeners a Specs ha quedado obsoleto. Al añadir listeners directamente, usafun extensions()en lugar defun listeners(). -
SpecIgnoredListner(nótese el error tipográfico) ha sido renombrado aInactiveSpecListener.
Colaboradores
Gracias a todos los autores que contribuyeron a esta gran versión. En orden alfabético (todos los commits desde 4.6.0):
AJ Alt, Ali Khaleqi Yekta, Alphonse Bendt, Andrew Tasso, Ashish Kumar, Ashish Kumar Joy, Bart van Helvert, Charles Korn, Christoph Pickl, Cory Thomas, dave08, Derek Chen-Becker, dimsuz, Emil Kantis, Federico Aloi, Hugo Martins, IgorTs2004, Imran Settuba, Ing. Jan Kaláb, IvanPavlov1995, Javier Segovia Córdoba, Jean-Michel Fayard, Jerry Preissler, Jim Schneidereit, Leonardo Colman, Marcono1234, Marvin Sielenkemper, Mervyn McCreight, Michael Werner, Mikhail Pogorelov, Mitchell Yuwono, Nico Richard, niqdev, OliverO2, Rustam Musin, Scott Busche, Sebastian Schuberth, Simon Vergauwen, sksamuel, Srki Rakic, SuhyeonPark, Tobie Wee
4.6.3 Septiembre 2021
Correcciones
-
StackOverflow al usar checkAll con funciones de cierta aridad #2513
-
Se añadieron arity8 y arity9 forall para pruebas con tablas #2444
4.6.2 Agosto 2021
Correcciones
-
Se revirtió el uso de API 1.5 introducida erróneamente en 4.6.1
-
autoClose interrumpe lazy #2388
-
minDate no respetado en Arb.localDate #2369
-
Sequence.containExactly debería funcionar para secuencias de paso único #2412
-
Caso extremo en BigDecimal por discrepancia entre equals y compareTo #2403
-
El parámetro iterations de PropTestConfig no se respeta #2428
-
tempfile y tempdir deberían hacer fallar la prueba cuando falla el borrado #2351
4.6.1 Julio 2021
Correcciones
-
HTMLReporter - CSS no se carga (la ruta del archivo es absoluta, no relativa) #2342
-
Anotaciones como @Ignore e @Isolate ahora funcionan cuando se componen #2279
-
Finalize spec ahora se llama correctamente en todas las situaciones #2272
-
Los límites de Arb.bigDecimal no se respetan #2357
-
Corrección para ejecutar pruebas individuales con WordSpec dentro de IntelliJ #2319
4.6.0 Mayo 2021
Esta es una versión menor que añade soporte para Kotlin 1.5 manteniendo la compatibilidad con Kotlin 1.4.x
Correcciones de errores
-
Todo el registro interno ahora usa funciones lazy, lo que ofrece una mejora significativa de velocidad en suites de pruebas grandes. Agradecimiento especial a Łukasz Wasylkowski por dedicar tiempo considerable a resolver este problema de rendimiento.
-
Corregidos falsos negativos en Inspectors cuando se usaban dentro de assertSoftly. #2245
Funcionalidades / Mejoras
-
La configuración de pruebas ahora puede especificarse a nivel de contenedor de pruebas además de a nivel hoja #1370 #2050 #2065
-
En pruebas basadas en datos, se añadió la anotación
IsStableTypeque, al usarse en un tipo, Kotest llamará al métodotoStringde ese tipo para crear el nombre de la prueba. Consulta la documentación actualizada #2248 -
En pruebas basadas en datos, se añadió la interfaz
WithDataTestNameque permite modificar el nombre generado para la prueba. Consulta la documentación actualizada #2248 -
Los métodos de reflexión se cachean para evitar llamadas lentas de reflexión.
-
Se añadieron versiones experimentales de
eventually,untilycontinuallyque no usankotlin.timeinternamente. Consulta la documentación actualizada #2149 -
Actualización de Coroutines a 1.5, lo que también permite publicar módulos de assertions/property tests para watchosX64
-
Artefactos watchosX64 publicados para assertions y property tests.
Colaboradores
Ashish Kumar Joy, Jim Schneidereit, Łukasz Wasylkowski, sksamuel
4.5.0 Mayo de 2021
Como parte de este lanzamiento, las extensiones de terceros se promocionaron a repositorios independientes en lugar de módulos dentro del repositorio principal de Kotest. Esto permite que las extensiones evolucionen más rápido, sin tener que esperar un lanzamiento completo de Kotest.
A partir de la versión 4.5, el espacio de nombres para todas las extensiones cambió a io.kotest.extensions y el versionado se reinició a 1.0.0.
Por ejemplo, si utilizabas la extensión Spring, antes añadías io.kotest:kotest-extensions-spring:4.x.y en tu build.
Ahora deberás usar io.kotest.extensions:kotest-extensions-spring:1.x.y.
Consulta la lista completa de módulos de extensión.
Cambios importantes
-
Para permitir un uso más amplio de
ExperimentalKotest, se trasladó deio.kotest.core.config.ExperimentalKotestaio.kotest.common.ExperimentalKotest. #1950 -
Para garantizar que
EventuallyListenerse invoque eneventuallycuando se lance una excepción, se cambió el camporesultdeListenerStatede tipoTaT?. Esto permite detectar cuándo falla la función productora eventually en lugar de aparentar que se bloquea. #2190 -
Las pruebas de propiedades ahora alternan aleatoriamente entre casos límite y muestras, en lugar de iterar todos los casos límite primero. Esto permite usar más casos límite y evita explosión combinatoria. Si implementas Arb personalizados extendiendo la clase Arb (en lugar de usar los builders
arbitrary), deberás ajustar tu método de casos límite defun edgecases(): List<A>afun edgecase(rs: RandomSource): A?. -
Debido al cambio anterior en pruebas de propiedades, si estableces una semilla en una prueba de propiedad, podrías necesitar ajustar su valor.
-
Las dependencias de kotlin stdlib ahora están marcadas como
compileOnly, lo que significa que se usará la versión de tu build. Kotest mantiene compatibilidad entre versiones evitando depender de funcionalidades exclusivas de lanzamientos recientes. -
Los nombres duplicados de pruebas ya no lanzan error automático, sino que modifican el nombre. Dos pruebas llamadas 'foo' aparecerán como 'foo' y '(1) foo'. Esto permite que las pruebas basadas en datos funcionen correctamente en JavaScript. Para restaurar el comportamiento original, establece
Configuration.duplicateTestNameMode = Error.
Características / Mejoras
-
Se añadió el módulo
kotest-framework-datatestque soporta correctamente anidamiento en tiempo de ejecución para pruebas basadas en datos. Consulta la documentación actualizada. #2078 -
Se añadió un nuevo comparador para DayOfWeek en el módulo
kotest-assertion-clock. #2124 -
Se añadió un método factory para simplificar la creación de comparadores. #2122
-
Se añadió un método en
Exhaustivepara crear un nuevoExhaustiveque sea el producto cartesiano de dosExhaustivedados. #2120 -
Se añadió soporte para escribir pruebas dentro de objetos además de clases. #1970
-
Se añadieron versiones suspend de
shouldCompleteWithin,shouldCompleteBetweenyshouldTimeOut. #2107 -
Se añadió el proyecto kotest-extensions-wiremock para gestionar el ciclo de vida de
WireMockServeren pruebas Kotest. #2108 -
Se añadió el proyecto kotest-extensions-kafka para usar Kafka embebido en tus pruebas.
-
Actualizada dependencia
klocka la versión 2.0.6 y añadidos objetivos de plataforma parabrowser,nodejs,linuxX64,mingwX64,macosX64,tvos,iosX64,iosArm64eiosArm32enkotest-assertions-klock. #2116 -
Ejecuta eventually una última vez si las iteraciones son una y el retardo es mayor que el intervalo #2105
-
Mejoras en
eventually:
(1)EventuallyPredicateahora es un alias de tipo en lugar de una interfaz para mejor experiencia de usuario.
(2) Mensajes de error mejorados para informar sobre fallos en elEventuallyPredicate.
(3) Nueva sobrecarga deeventuallysinEventuallyPredicatepara comportamiento similar auntil. -
Añadidos comparadores
shouldBeEqualToComparingFieldsyshouldBeEqualToComparingFieldsExceptque verifican igualdad comparando campos en lugar de usarequals. #2197 -
oneyanyañadidos como alternativas aassertSoftly. Son métodos suspendidos que verifican que solo una aserción tuvo éxito (one) o al menos una tuvo éxito (any). #1950 -
Nuevo reportero para generar informes HTML. #2011
-
Añadido
Exhaustive.cartesian. #2119 -
kotest.tagsahora configurable mediante variables de entorno. #2098 -
Los casos límite ahora se generan probabilísticamente. #2112
-
TestResult ahora admite una razón para saltar pruebas. #2172
-
Reintroducido soporte para watchOS en x86. #2204
-
Nueva sobrecarga en
Double.plusOrMinusque acepta porcentajes:1.0.plusOrMinus(10.percent).
Correcciones de errores.
-
Corrige fallo en eventually dentro del bloque assert softly sin reintentar la lambda. #2092
-
Corrige implementaciones de
Listener(aparte deProjectListener) no detectadas por el framework. #2088 -
Corrige que
EventuallyListenerno sea invocado eneventuallycuando la función productora lanza una excepción. #2190 -
Usa el nombre de clase como prefijo predeterminado para archivos temporales. #2140
-
Corrección para
SystemExitListenercon framework picocli. #2156 -
Corrige generación de valores aleatorios en
Arb.choose(arb, arb2, ...). #2176 -
Usar checkAll, forAll y take en un Arb causa una InvalidMutabilityException en XorWowRandom para Ios. #2198
-
Corrige problemas de paso de vararg a otra función en containsInOrder #2200
-
StringShrinker ignoraba límite de tamaño mínimo. #2213
-
Corrige concurrencia ilimitada en ejecución de especificaciones con soporte experimental. #2177
-
Sincroniza acceso a contextos de prueba Spring. #2166
-
Corregido error tipográfico en comparador
haveClassAnnontations(deprecada la versión incorrecta). #2133
Deprecaciones
-
Obsoletos:
instanceOf,beInstanceOf,beTheSameInstanceAs,beOfTypedel paqueteio.kotest.matchers. Se eliminarán en la versión 4.7. Usar equivalentes deio.kotest.matchers.types. -
Eliminada versión obsoleta de eventually que usaba duraciones para intervalos. #2086
-
Los receptores utilizados en los ámbitos de prueba se han renombrado. Por ejemplo,
DescribeScopese ha convertido enDescribeSpecContainerContext. Los nombres anteriores existen como alias de tipo pero están obsoletos. Esto solo es relevante si implementas tipos de especificación personalizados que heredan de las especificaciones integradas o has definido métodos de extensión en esos ámbitos.
Colaboradores
-
AJ Alt
-
Alex Ordóñez
-
Andreas Deininger
-
Ashish Kumar Joy
-
Dale King
-
Hirotaka Kawata
-
Hugo Martins
-
Janek
-
Jim Schneidereit
-
Leonardo Colman
-
Malte Esch
-
Mateusz Kwieciński
-
Mitchell Yuwono
-
Nikita Klimenko
-
Niklas Lochschmidt
-
Rustam Musin
-
Sean Flanigan
-
Sebastian Schuberth
-
Yoonho Sean Lee
-
Zak Henry
-
sksamuel
-
tbcs
4.4.3 Marzo 2021
- Se eliminaron declaraciones de depuración detalladas que se habían dejado por error en la versión 4.4.2.
4.4.2 Marzo 2021
Nota: La versión 4.4.2 se compila con Kotlin 1.4.31 y coroutines 1.4.3
-
Función: Los artefactos de prueba para Javascript ahora se compilan con el compilador IR además del actual #2037
-
Corrección de error:
BeforeProjectListenerno siempre se detectaba -
Corrección de error: Al usar
shouldBecon excepciones, solo se comparaba el mensaje #2094 -
Corrección de error: Se soluciona
withEnvironment()para que no distinga mayúsculas/minúsculas en Windows #2099 -
Corrección de error: Se soluciona
IncorrectDereferenceExceptional llamar aserciones en hilos secundarios en Native #2128 -
Corrección de error: Se soluciona el bloqueo de
Arb.bigdecimalcon ciertas combinaciones de valores mínimos/máximos #2135 -
Mejora:
eventuallya veces solo verificaba una vez pese a intervalos programados cortos #2089 -
Mejora: Se actualiza el mensaje de error para el matcher
shouldContainKeyspara incluir claves ausentes #2106 -
Mejora:
haveCauseOfTypemuestra el tipo de excepción en lugar del tipo de causa #2131
4.4.1 Febrero 2021
Nota: La versión 4.4.1 requiere como mínimo Kotlin 1.4.30
-
Se solucionó la agrupación de pruebas de Allure #1871
-
Se actualizaron shouldBeEmpty y shouldNotBeEmpty para funcionar con referencias anulables #2055
-
Se expone el factor en intervalos exponenciales de eventually y until #2046
-
Se añadió límite superior a intervalos exponenciales y Fibonacci #2053
-
Se solucionó el nombre de prueba para tests basados en datos con enumeraciones #2034
-
IntArray no se imprimía en el registro de Assert #2042
-
Se solucionó JSON inválido que causaba errores de streaming en aserciones JSON #2045
-
La generación de conjuntos grandes mediante Arb.set lanzaba excepción #2051
-
Se evita crear lambdas adicionales en el forAll de bloqueo #2036
4.4.0 Febrero 2021
Nota: La versión 4.4.0 requiere como mínimo Kotlin 1.4.21
Funcionalidades / Mejoras
-
Añadido generador lazy para pruebas de propiedades #1651
-
Nuevas aserciones para mapas #1697
-
Framework de pruebas de propiedades ahora disponible para targets nativos #1747
-
Mejoras en soporte de concurrencia para specs / tests #1760
-
Variación de clue/asClue para aceptar lazy #1766
-
Nuevas aserciones para mapas: shouldNotContainAnyKeysOf() y shouldNotContainAnyValuesOf() #1769
-
Añadidos matchers para AtomicBoolean #1791
-
Actualización a Kotlin 1.4.20 #1800
-
Los casos de prueba pueden incluir sus tags en el nombre si así se configura #1804
-
Funcionalidad para usar 'it' sin necesidad de 'describe' #1827
-
Añadida versión inline para alias intanceOf #1838
-
Soporte para globalAssertSoftly mediante propiedad del sistema #1843
-
Helper para creación de directorios temporales #1862
-
shouldBeBetween no definido para floats #1927
-
Aumentada aridad de checkall / forall a 12 parámetros #1929
-
Más configuraciones para generador de emails #1941
-
El matcher not null debería mostrar el valor que se esperaba no nulo #1942
-
A ñadida SpringTestExtension que expone test context mediante elemento coroutine context #1956
-
Añadida extensión para tests activos #1959
-
Actualización de matchers ktor para usar ktor 1.5 #1965
-
Permitir registro de pruebas basadas en datos en ámbito raíz #1967
-
Añadido arbitrario para dominios #1969
-
Actualización de matchers arrow a 0.11.0 #1976
-
Añadido arbitrario para puntos de código alfanuméricos #1989
Correcciones de errores
-
Mejoras de rendimiento para excepciones en JVM #1787
-
Uso de símbolos o japonés en nombres de prueba altera comportamiento #1828
-
Comportamiento incorrecto al combinar assertSoftly y shouldNotBe #1831
-
Aserción Then en BehaviorSpec muestra verde en IntelliJ cuando debería ser rojo #1857
-
AssertionMode.Error no funciona en FeatureSpec #1864
-
Uso inválido de tests debería lanzar excepción en runtime #1882
-
Salida de reporters debería ser single-threaded #1895
-
Arb.set con rango bloquea test si el generador no produce suficientes valores #1931
4.3.2 Diciembre 2020
Características
-
Librería de aserciones ahora disponible para watchos32 además de otros targets
-
Permitir usar
itpara crear tests fuera de bloques describe -
Añadidos Arb.lazy y Exhaustive.lazy
Corrección de errores
-
Revertido método específico de Kotlin 1.4 añadido en 4.3.1
-
Arb.choose no incluye casos límite de arbs de entrada #1886
-
Reducción de cadenas no se ejecuta #1860
-
Arb.stringPattern ralentiza dramáticamente los tests #1878
-
AssertionMode.Error no funciona en FeatureSpec #1864
-
Casos extremos incompletos en el generador de doubles #1869
-
Comportamiento inesperado en ToleranceMatcher con doubles infinitos #1832
-
Comportamiento incorrecto al combinar assertSoftly y shouldNotBe #1831
-
Se corrigió shouldContainJsonKeyValue para funcionar con valores Long esperados y valores enteros reales #1790
4.3.1 noviembre de 2020
Características
-
Variación de clue/asClue para aceptar lazy #1766
-
Se añadieron Tuple2..Tuple22 para pruebas de datos #1773
Mejoras
-
Recuperación de stacktrace cuando falla un bloque
eventually#1775 -
Mejoras de rendimiento para excepciones en JVM #1787
-
Actualización del descubrimiento para inicializar solo clases de especificaciones #1788
Corrección de errores
-
Identificadores estables añadidos para pruebas basadas en datos con clases no-data #1795
-
Mensajes incorrectos de TimeoutException cuando las pruebas exceden tiempo de invocación a nivel de especificación #1809
-
Los tiempos de espera de invocación no deben aplicarse a contenedores #1810
-
Arb.filter causaba desbordamiento de pila #1818
-
Cambio de firma de tipo en Arb.shuffle roto en 4.3.0 #1824
4.3.0 octubre de 2020 - Blog
Características
-
Nuevo DSL para pruebas basadas en datos con clases de datos #1537 (framework)
-
Opción para eliminar espacios en nombres de pruebas #1545 (framework)
-
Anotación EnabledIf para especificaciones #1683 (framework)
-
Propagación del contexto de corrutinas a las pruebas #1725 (framework)
-
Opción para suprimir volcado de configuración #1742 (framework)
-
Atributo de severidad añadido para TestCase #1746 (framework)
-
Opción añadida kotest.framework.sourceref.disable (framework)
-
Motor sin dependencias #1748 (framework)
-
Comparación multilínea para contenido de archivos #823 (assertions)
-
Nueva aserción: Iterator.shouldHaveNext() #1660 (assertions)
-
Nuevas aserciones: isEmpty/isDefined para java.util.Optional #1661 (assertions)
-
Matchers no-infix deben retornar
thispara encadenamiento #1744 (assertions) -
Módulo de pruebas de propiedades para kotlinx-datetime #1679 (prop-testing)
-
Gen.forNone añadido #1636 (prop-testing)
-
Arb debe generar un solo valor #1754 (prop-testing)
-
Arbitrario añadido para generar BigDecimal #1705 (prop-testing)
-
Pasos y traza de pila añadidos a Allure, con documentación completa #460 (extensions)
-
Extensión Robolectric añadida al build principal (extensions)
Cambios importantes
- El módulo
kotest-extensions-junit5extensionsahora se llamakotest-extensions-junit5
4.2.6 octubre de 2020
Características
- Listener por proyecto añadido para Testcontainers #1731
Corrección de errores
-
Regresión corregida en shouldBe con iterables/arrays #1707 #1727
-
Corrección del primer fallo en bloques
beforeTest#1736 -
Se marca como obsoleto distinct #1730
-
Corregido el resultado vacío de allure para pruebas con el bloque afterTest fallido #1724
4.2.5 Septiembre 2020
-
Corrección: Solucionado problema de rendimiento al usar miles de pruebas en Gradle #1693
-
Característica: Añadidos matchers para componentes de Pair / Triple #1694
-
Característica: Añadido matcher shouldHaveNameWithoutExtension para archivos y rutas #1696
-
Mejora: Añadido modo de ciclo de vida para Koin #1710
4.2.4 Septiembre 2020
-
Corrección: El tiempo de prueba no escala con el número de pruebas #1685
-
Corrección: Añadido modo de ciclo de vida para Spring Listener #1643
-
Corrección: Arreglada y eliminada doble negación en aserciones de directorios vacíos
-
Mejora: La excepción por nombres duplicados debe incluir el nombre de la prueba #1686
-
Mejora: SpringListener genera nombres de método significativos #1591
4.2.3 Septiembre 2020
-
Corrección: Los throwables de tipo
Errordeben reportarse a los listeners del motor -
Corrección: Cambiado classgraph a api
-
Corrección: Las comparaciones de Set usan .contains() en lugar de búsqueda lineal #1672
-
Corrección: Cambiado retardo predeterminado de reintento a 1 #1670
-
Corrección: Eliminado uso de API de Kotlin 1.4 en pruebas de propiedades
-
Mejora: Permitir que retry llame a funciones suspendidas #1669
-
Mejora: Añadido alias de matcher para Iterator have next #1664
-
Mejora: Añadidos matchers para java.util.Optional #1662
-
Mejora: Extendidos matchers de Ktor a librerías cliente #1658
-
Mejora: Añadida aserción
forNone#1654 -
Mejora: Arb y Exhaustive deben ser covariantes #1653
-
Mejora: Eliminada prueba extra
executionErrormolesta en Gradle #1655 -
Mejora: Mensaje de error más útil al fallar la instanciación de spec
-
Documentación: Actualizada documentación de dependencias Gradle eliminando sufijo -jvm innecesario #1650
-
Documentación: Extensión MockServer #1446
4.2.2 Agosto 2020
-
Corrección: Eliminado uso de método exclusivo de Kotlin 1.4
-
Corrección: Solucionado KotlinReflectionInternalError en enums Java #1611
-
Corrección: Errores en DiscoveryExtension no se propagaban a la salida #1634
-
Corrección: Etiquetas especificadas vía DSL inline no se detectaban #1642
-
Mejora: Mejorada salida de matchers de colecciones mostrando un elemento por línea #1380
4.2.1 Agosto 2020
- Característica: Las librerías de aserciones ahora publican para watchos, tvos e ios además de macos, windows y linux
4.2.0 Agosto 2020 - Blog
-
Característica: Actualizado a Kotlin 1.4.0 #1511
-
Característica: Permitir detección y fusión de múltiples configuraciones de proyecto #1632
-
Característica: Permitir control de mayúsculas en reportes de pruebas #1458
-
Característica: Usar expresiones para etiquetas en lugar de include/exclude #863
-
Característica: Añadidas nuevas funciones de callback con ámbito #1584
-
Función: Soporte para la anotación de orden en SpecOrder #1593
-
Función: Anulaciones a nivel de Spec para timeouts y tiempos de invocación #1551
-
Mejora: Añadido modo exhaustivo exclusivo para pruebas de propiedades #1596
-
Mejora: Cambio de instancias de matchers para usar contratos genéricos #1510
-
Mejora: Permitir desactivar advertencia de SpringListener en clases finales #1573
-
Mejora: Incluir runner de consola en el plugin de IntelliJ #1567
-
Mejora: Mensaje de error mejorado para map should contain cuando la clave está presente #1587
-
Mejora: Permitir personalización de Allure #1527
-
Mejora: Uso del identificador de licencia SPDX "Apache-2.0" en archivos POM #1517
-
Mejora: Permitir parámetros suspendidos en forAll(1) #1626
-
Corrección: Ejecutar todas las pruebas en un paquete no incluye subpaquetes #1621
-
Corrección: No se puede ejecutar un único método de prueba desde Gradle 6.5 #1531
-
Corrección: Listeners de TestFactory no se ejecutan en pruebas anidadas #1613
-
Corrección: Deshabilitar ejecución con métodos x- no funciona en kotest-core-js #1623
-
Corrección: NoSuchFileException al usar kotest-extensions-junitxml con Gradle #1581
-
Corrección: Reporte JUnit incompleto con FunSpec #999
-
Cambio Rompedor: El módulo kotest-core ha sido reemplazado por kotest-framework-api y kotest-framework-engine. Autores de herramientas pueden depender solo de api. Engine debe usarse para pruebas JS. Para pruebas JVM, continuar usando kotest-runner-junit5-jvm.
4.1.2 Julio 2020
-
Corrección: Dkotest.tags.include= solo considera @Tags #1536 sksamuel
-
Corrección: Asegurar que exhaustive no se construye con lista vacía #1549 Cleidiano Oliveira
-
Corrección: Añadir runner de spec concurrente y corregir runner secuencial #1547 sksamuel
-
Corrección: Considerar
rangeenIntShrinkeryLongShrinker#1535 sksamuel -
Función: Soporte de expresiones para tags como alternativa a include/exclude #863 sksamuel
-
Función: Extensión de algunos matchers a Iterable #1538 Leonardo Colman Lopes
-
Mejora: Capacidad para hacer sustituciones de parámetros al ejecutar archivos HTTP #1560 Shane Lathrop
-
Mejora: Añadidas opciones xGiven/xWhen/xThen a Behavior spec #1534 sksamuel
-
Mejora: Sintaxis mejorada para Test Containers sksamuel
-
Mejora: Restaurar contexto en describe #1565 sksamuel
-
Cambio Rompedor: Actualización de firma de assertSoftly para recibir objeto bajo prueba Ashish Kumar Joy
4.1.1 Junio 2020
-
Corrección: Se solucionó un problema con describe spec y el plugin de IntelliJ #1528
-
Corrección: Mensaje de error incorrecto en Exhaustive's when al estar por debajo del mínimo de iteraciones #1526
4.1.0 Junio 2020 - Blog
-
Característica: El plugin Kotest para IntelliJ alcanza versión final. Requiere Kotest 4.1 o superior. https://plugins.jetbrains.com/plugin/14080-kotest
-
Característica: Resalta diferencias al comparar data classes #826 #1242
-
Característica: Mejorar mensajes de error en matchers de tolerancia #1230
-
Característica: Añadido Arb para (lat, long) #1304
-
Característica: Integración con Testcontainers #1353
-
Característica: Variantes x para specs Behavior/Feature/Expect #1383
-
Característica: Configuración global para pruebas de propiedades con callbacks before/after #1435
-
Característica: Ejecución paralela de casos de prueba en Spec #1362
-
Característica: Añadido variable.assertSoftly #1427
-
Característica: Utilidad de corrutinas para timeouts #1447
-
Característica: Añadir timeout para pruebas individuales con invocaciones > 1 #1442
-
Característica: Añadido matcher shouldExistInOrder #1460
-
Característica: Añadido Arb.orNull #1414
-
Característica: Opción para eliminar prefijos en salida de tests con specs que usan prefijos #1486
-
Característica: Añadido matcher shouldCompleteExceptionallyWith #1454
-
Característica: Exhaustive.merge para dos generadores con supertipo común #1502
-
Mejora: Añadidos Byte.shouldBeBetween(min, max) y Arb.bytes #1408
-
Mejora: Eliminados alias de kotlintest #1457
-
Mejora: Los ámbitos padres no son ámbitos de corrutinas #1488
-
Mejora: Usar isolation en lugar de isolationMode #1418
-
Mejora: Mejoras en igualdad mediante reflexión #1413
-
Mejora: Pruebas de propiedades deben reportar excepciones en inputs reducidos #1279
-
Mejora: Convertir beforeProject y afterProject en funciones suspendidas #1461
-
Mejora: Actualización de Arb.flatMap para aceptar listas #1500
-
Mejora: Los generadores de fechas deben permitir seleccionar fechas específicas #1354
-
Corrección de error: Casos de prueba con nombres multilínea fallaban #1441
-
Corrección de error: Before\AfterProject capturaban solo una excepción #1387
-
Corrección de error: Arb.bind() llamaba al constructor incorrecto #1487
-
Corrección de error: El volcado de configuración del proyecto no incluía correctamente los enums #1379
-
Corrección de error: Añadir Arb.choose que acepte arbs ponderados #1499
-
Corrección de error: Arb.list no utilizaba ListShrinker #1493
4.0.6 Junio 2020
-
Corrección de error: Las dependencias de assertions-core ahora se incluyen correctamente sin usar el runner de JUnit #1425
-
Corrección de error: checkAll fallaba si el tamaño exhaustivo era muy grande #1456
-
Corrección de error: El typeclass Show para java.nio.file.Path causaba desbordamiento de pila #1313
4.0.5 Abril 2020
-
Corrección de error: El modo foco ignoraba algunas pruebas anidadas #1376
-
Corrección de error: Arb.choice incluía casos límite en los valores generados #1406
-
Corrección de error: Los casos límite de Arb.int y Arb.long incluían valores fuera del rango especificado #1405
4.0.4 Abril 2020
- Corrección de error: Excepciones de tipo
LinkageError(comúnmenteExceptionInInitializerError) no se manejaban #1381
4.0.3 Abril 2020
-
Función: Soporte para Koin 2.1 #1357
-
Desaprobación: El contexto de cadena en ShouldSpec está obsoleto en favor del bloque context #1356
-
Mejora: Añadidos saltos de línea al matcher Collection.containExactly #1380
-
Mejora: El matcher de tolerancia emite mensajes de fallo más claros (incluyendo valores ±) #1230
-
Corrección de error: El volcado de configuración del proyecto ahora muestra valores correctos para ordenación de pruebas y modo de aislamiento #1379
-
Corrección de error: Se restaura el orden de autoclose para funcionar como en la versión 3.4.x (era indefinido en la 4.0.x) #1384
-
Corrección de error: Se soluciona shouldContainExactly para arrays #1364
4.0.2 Abril 2020
-
Función: Se añaden filter y map a Exhaustives #1343
-
Función: Matcher shouldBeInteger utilizando contracts #1315
-
Corrección de error: Se soluciona el problema con xdescribe en describe spec que siempre estaba activo
-
Corrección de error: Las etiquetas simples usaban nombres de clase completos en lugar del nombre simple, rompiendo compatibilidad hacia atrás #1346
-
Mejora: Cacheo de resultados de descubrimiento para mayor rendimiento en maven #1325
-
Corrección de error: Cierre de recursos usados en el escaneo classgraph #1323
-
Corrección de error: Se soluciona el timeout para corrutinas lanzadas dentro de tests sin su propio ámbito #1345
-
Corrección de error: Se soluciona Arb.bind que devolvía siempre el mismo valor #1348
-
Corrección de error: Se restaura el uso de aserciones opentest4j #1339
-
Corrección de error: Se soluciona la falta de traza de pila en pruebas basadas en datos #1336
-
Corrección de error: Se soluciona Arb.instant que siempre devolvía el mismo valor #1322
-
Corrección de error: Se añade solución temporal para bugs de gradle 5.
4.0.1 Marzo 2020
-
Mejora: Se actualiza Kotlin a 1.3.71
-
Función: Se añade Arb para latitud/longitud #1304
4.0.0 Marzo 2020
La versión 4.0.0 es una gran actualización. Con el cambio de nombre del proyecto, los paquetes y nombres de módulo han cambiado.
Cambios principales:
-
El proyecto KotlinTest ahora es multiplataforma. Esto significa que la mayoría de módulos requieren añadir el sufijo -jvm si trabajas exclusivamente en JVM del lado del servidor. Por ejemplo,
io.kotlintest:kotlintest-runner-junit5pasa a serio.kotest:kotest-runner-junit5-jvm, considerando tanto el cambio de paquete como el sufijo de plataforma. -
La biblioteca principal de aserciones es ahora
kotest-assertions-corey se han añadido muchas nuevas aserciones (matchers). Este registro de cambios no las listará todas. Es más sencillo consultar la lista completa. -
La biblioteca para pruebas de propiedades se ha movido al nuevo módulo
kotest-propertyy ha sido rediseñada para incluir nuevas funcionalidades. Las antiguas clases para pruebas de propiedades están obsoletas y se eliminarán en futuras versiones. -
Se han añadido muchos nuevos generadores para pruebas de propiedades. La lista completa está aquí.
-
Se han añadido especificaciones componibles en forma de Fábricas de Pruebas.
-
La configuración de proyecto ya no requiere ubicarse en un paquete especial, sino que puede situarse en cualquier lugar del classpath.
-
Se ha añadido @Autoscan para listeners y extensiones.
-
Se ha añadido una versión DSL de los callbacks del ciclo de vida de pruebas.
Cambios menores.
-
Función: Se ha añadido un nuevo módulo de aserciones para JSoup. #1028
-
Función: Matchers estadísticos #851
-
Función: Soporte experimental para Robolectric #926
-
Corrección: shouldNotThrowAny ahora retorna T en lugar de Unit #981
-
Interno: Eliminada dependencia de Arrow para evitar conflictos de versión
-
Función: Configuración predeterminada global para casos de prueba
-
Función: whenReady(f) ha sido reemplazado por f.whenReady con soporte para corrutinas
-
Función: Ordenación alfabética de casos de prueba
-
Función: Todos los callbacks de prueba ahora soportan corrutinas
-
Función: forEachAsClue
-
Mejora: Soporte para Koin 2.1.0
-
Mejora: Permitir explícitamente clases internas como specs
-
Función: Soporte para matchers de Klock #1214
-
Función: Soporte para matchers JDBC #1221
3.4.2
- Corrección: Mejora de SpringListener para funcionar correctamente con todos los Listeners de Spring #950
3.4.1
-
Interno: Eliminadas redeclaraciones de JUnit #927
-
Función: Añadido modificador infix a más matchers de Arrow #921
-
Función: Matchers de rango para BigDecimal #932
-
Función: Matcher de crecimiento/decrecimiento monótono/estricto #850
-
Función: Corrección en comparaciones de shouldBe y shouldNotBe #913
-
Función: Sobrecarga añadida al matcher shouldHaveStatus de Ktor #914
-
Función: Fallo en pruebas padre cuando fallan pruebas hijas #935
3.4.0
-
Función: Soporte para ejecutar pruebas con Koin #907
-
Función: Opción de timeout global aplicable a todas las pruebas #858
-
Función: Introducido await como versión mejorada de eventually #888 #793
-
Función: Sobrecargas de array para todos los matchers #904
-
Función: Soporte para Listeners de prueba de Spring #887
-
Función: Limitar paralelismo para ciertos specs #786
-
Característica: Se ha añadido un nuevo listener de proyecto #859
-
Característica: Modificación de extensiones de sistema para admitir diferentes modos #843
-
Característica: Impresión de configuraciones de proyecto #841 #866
-
Característica: Nuevas variaciones de matchers para fechas (mes, unidades de tiempo, día de semana, etc) #899
-
Característica: Opción de configuración para número mínimo de líneas en diff multillínea #706
-
Característica: Permitir scope describe anidado en DescribeSpec #905
-
Característica: Matcher para fechas que ignora zonas horarias #891
-
Característica: Matchers de cadena para línea única y tamaño entre rangos #853
-
Característica: Contratos y variaciones lambda de matchers para tipos arrow #802 #890 #834
-
Característica: Matchers para LocalTime añadidos #889
-
Característica: Variantes Zoned y Offset date time para shouldBeToday #820
-
Característica: Nuevos matchers para excepciones #864
-
Característica: Matchers para BigDecimal añadidos #875
-
Característica: shouldBeSymbolicLink y shouldHaveParent añadidos para archivos #871
-
Característica: Matchers JSON desde recursos #873
-
Característica: Matchers shouldBeZero y shouldNotBeZero para tipos numéricos #819 #848
-
Característica: Matcher shouldContainFiles para rutas añadido #854
-
Característica: Los matchers URI ahora funcionan también con URLs #818
-
Característica: Permitir configurar modo de aislamiento en configuración de proyecto #842
-
Característica: Matcher containFileDeep para archivos añadido #846
-
Característica: Implementa SkipTestException #805
-
Característica: Implementa matchers Double para Infinity y NaN #801
-
Característica: Función de ayuda asClue añadida #784
-
Función: Añade matchers de mapas en notación infija usando Pair #792
-
Función: Añade generadores para tipos primitivos Short y Byte #773
-
Función: Implementa la función Gen.take(n) #758
-
Función: Implementa la función Gen.next(predicado) #759
-
Función: Soporte para modificar tamaños de listas, conjuntos y mapas generados #757
-
Función: Permite excluir/incluir etiquetas en tiempo de ejecución #761
-
Corrección: Añade parte faltante en mensaje de shouldHaveLength #870)
-
Corrección: Actualiza matchers JSON para incluir el JSON real en el error
-
Corrección: Soluciona problema con listeners before/after test que no fallaban tests #842 #865
-
Corrección: Modifica autoClose para aceptar AutoCloseable #847
-
Corrección: Soluciona problema izquierda vs derecha #612
-
Corrección: Asegura que specs que fallan en inicialización fallen en builds Maven #832
-
Corrección: Garantiza reporte correcto cuando hay excepciones en bloques init, beforeSpec o afterSpec #771
-
Interno: io.kotlintest.Result renombrado a io.kotlintest.MatcherResult para evitar conflicto con kotlin.Result #898
3.3.0
-
Función: ¡Plugin para Intellij ya disponible!
-
Función: FunSpec ahora permite bloques de contexto padre
-
Función: Matcher between para java.time (#694)
-
Función: Listeners constantes 'now' (#693)
-
Función: Plugin PITest (#687)
-
Función: Inyección de mocks Spring @MockBean @MockkBean (#684)
-
Función: Matchers instanceOf y typeOf usan el valor casteado (#695)
-
Función: Matchers de Digest #667
-
Función: Función de aserción continually #643
-
Función: Añade opción de configuración para
assertSoftly#512 (#655) -
Función: Implementa System Security Manager Extensions (#640)
-
Función: Implementa System Environment Extension (#633)
-
Novedad: Implementación del matcher y aserciones shouldBeOneOf (#647)
-
Novedad: Adición de matchers de nulabilidad con Kotlin Contracts (#602) (#646)
-
Novedad: Asistentes para pruebas con SystemProperty #524 (#608)
-
Novedad: Migración de extensiones al módulo Kotlintest-Extensions (#629)
-
Novedad: Generadores numéricos basados en rangos y generadores para javax.time #530 (#543)
-
Novedad: Ampliación de la especificación Word Spec (#635)
-
Novedad: Implementación de matchers shouldNotThrow (#603)
-
Mejora: Hacer configurables los diffs multilínea "condensados" #607
-
Mejora: Permitir que las extensiones de Arrow Either soporten tipos anulables (#613)
-
Mejora: Habilita test! en todas las especificaciones (#606)
-
Mejora: Adición de extensiones para pruebas de propiedades con generadores personalizados (#506)
-
Mejora: Adición de flag para issues en config #525
-
Corrección: Soporte añadido para selectores de paquetes en solicitudes de descubrimiento JUnit #597
-
Corrección: Pruebas de nivel superior deshabilitadas no marcadas como ignoradas en JUnit #656
-
Corrección: Solución para containOnlyOnce que devolvía true sin ocurrencias (#660)
-
Interno: Despliegue automático de snapshots en cada compilación de Travis
-
Interno: Eliminación de todos los matchers/aserciones obsoletos (#653)
3.2.1
-
Novedad: AnnotationSpec ahora tiene configuración de excepción
expected#527 #559 -
Novedad: BehaviorSpec permite anidamiento adicional con
Andentre palabras clave #562 #593 -
Corrección: Pruebas independientes compartían hilo causando timeouts inesperados #588 #590
-
Mejora: Documentación aclarada sobre TestConfig.invocations #591 #592
3.2.0
-
Característica: Soporte para corrutinas directamente desde las pruebas #386
-
Característica: Modo de aislamiento añadido para controlar con mayor precisión las instancias en las que se ejecutan las pruebas #379
-
Característica: Al reejecutar pruebas, se ejecutan primero las especificaciones que fallaron previamente #388
-
Característica: Soporte para @Before y @After en AnnotationSpec para facilitar la migración desde JUnit #513
-
Característica: Soporte para selectores de paquetes en el descubrimiento de pruebas #461
-
Mejora: Los listeners de pruebas se han rediseñado para hacerlos más potentes y claros #494
-
Mejora: Mejor soporte para comparaciones de cadenas multilínea #402
-
Mejora: Gen.oneOf debe ser covariante #471
-
Mejora: Double debe tener matchers opuestos para shouldBePositive y shouldBeNegative #435
-
Corrección de errores: BehaviorSpec no permite configurar errores #495
-
Corrección de errores: Error al lanzar AssertionError desde dentro de un bloque shouldThrow{} #479
-
Corrección de errores: Corrección de timeouts en pruebas #476
-
Corrección de errores: Corrección del mensaje de error en AnnotationSpec #539
-
Interno: La compilación ahora usa Kotlin 1.3 #379
-
Interno: Actualización del escaneo de clases para usar ClassGraph en lugar de Reflections #459
3.1.11
-
Característica: Soporte de notación infija para matchers de cadenas #443
-
Característica: Soporte de notación infija para matchers de archivos, floats, secuencias, tipos y URIs #445
-
Característica: Soporte de notación infija para matchers de Double #429
-
Característica: Soporte de notación infija para matchers de Map #417
-
Característica:
shouldNotBePositiveyshouldNotBeNegativepara matchers de Double #435 -
Característica: Soporte para Duration en matchers de tiempo #423
-
Característica: Matcher arrow-assertion Failure que verifica la igualdad del throwable subyacente #427
-
Característica:
shouldNotBeTrueyshouldNotBeFalsepara matchers booleanos #452 -
Mejora: Documentación para
Gen.int()#419 -
Mejora: Documentación Javadoc para los comparadores de fechas #420
-
Mejora: Mensaje de error más claro para colecciones vacías en comparadores #438
-
Mejora: Mejor filtrado de trazas de pila en la clase Failures #465
-
Corrección: El comparador
shouldNotBeExactlypara Double tenía una implementación incorrecta #432 -
Corrección: Pruebas de un solo hilo ejecutaban
beforeyafteren hilo diferente al de la prueba #447 -
Corrección: Pruebas con invocaciones > 1 no finalizaban si fallaban #413
3.1.10
-
Funcionalidad: Versión en notación infija para comparadores inline, ej.
date1 shouldHaveSameYearAs date2(#404 #407 #409) -
Funcionalidad: Soporte infijo para comparadores de enteros y largos (#400)
-
Funcionalidad: Añadidos comparadores startsWith/endsWith para colecciones (#393)
-
Mejora: Uso de representaciones inequívocas en comparadores de colecciones (#392)
-
Mejora: Los comparadores de colecciones ahora funcionan también con
Sequence(#391) -
Mejora: Añadida variante shouldThrowUnit de shouldThrow (#387)
-
Corrección: Comportamiento de shouldBe en arrays sin tipo estático (#397)
3.1.9
-
Funcionalidad: Añadidas aserciones suaves (#373)
-
Funcionalidad: Comparadores
sortedWith(y relacionados) (#383) -
Mejora: Eliminada restricción innecesaria
Comparable<T\>en comparadoressortedWith(#389) -
Mejora: Mejorado algoritmo de StringShrinker (#377)
-
Corrección: shouldBeBetween debería usar shouldBe en lugar de shouldNotBe (#390)
-
Corrección: beLeft comparaba contra Either.Right en lugar de Either.Left (#374)
-
Interno: Nombrado de servicios ejecutores para monitorización JMX