Releases: kotest/kotest
Releases · kotest/kotest
v6.1.5
What's Changed
- Add withError builder to MatcherResultBuilder to rethrow a supplied Throwable by @sksamuel in #5713
- Update dependency io.kotest:io.kotest.gradle.plugin to v6.1.4 by @renovate[bot] in #5730
- Update dependency io.qameta.allure to v3.0.2 by @renovate[bot] in #5731
- Fix misleading docs on shrinking with custom generators (#5084) by @sksamuel in #5724
- Fix hard dependency on Android plugin by @sksamuel in #5734
- Update
kotlin-compile-testingto version 0.12.1 to support Kotlin 2.3 by @sksamuel in #5736 - add new modules to kotest examples pipeline by @alfonsoristorato in #5739
- Avoid afterEvaluate in KotestPlugin by @sksamuel in #5735
- move powerSetIndexes to common (#5740) by @AlexCue987 in #5741
- Allow running daily tests with latest kotest version for project kotest-maven too by @alfonsoristorato in #5742
- re-enable location hints for TeamCity by @alfonsoristorato in #5743
Full Changelog: v6.1.4...v6.1.5
v6.1.4
What's Changed
- update gradle to 9.3.1 by @nhajratw in #5672
- Refactor Gradle plugin to use
Property<Boolean>for extension values by @sksamuel in #5658 - support for config on all methods and data test changes for all specs by @alfonsoristorato in #5681
- Updating arrow extension docs to point to correct artifact by @Kantis in #5683
- Overlapping partial matches causes a higher than possible match value. by @Kantis in #5682
- Look for project config in common parent packages by @sksamuel in #5673
- Adds a Kotlin EAP build on a cron by @sksamuel in #5687
- Fix ErrorCollector implementation for non-JVM and add JS tests by @sksamuel in #5686
- Fix multiple
--testsissue by @T45K in #5691 - Refactor Android test configuration producer to support reusing configurations by @sksamuel in #5690
- Document SQL matchers by @sksamuel in #5703
- Remove unused mordant from JVM by @sksamuel in #5702
- Restore 5.x package names for error and assertion counters. by @sksamuel in #5692
- Fix detection of JS Frameworks for WasmJS test output when using browser mode. by @sksamuel in #5696
- Add extensive tests for android producer by @sksamuel in #5695
- Remove filter from KotlinJsTask after forwarding to the Kotest engine by @sksamuel in #5706
- Add IC-261 (IntelliJ 2026.1 EAP) build target for the intellij plugin by @sksamuel in #5700
- Fix IC-261 tests: add org.intellij.groovy.live.templates bundled plugin by @sksamuel in #5708
- Fix default productName back to IC-253 by @sksamuel in #5709
- Add withRule to support JUnit4 rules in JUnit4 runner by @sksamuel in #5698
- Escape single quotes in GradleTestFilterBuilder by @sksamuel in #5710
- Move JVM-only modules to conditional inclusion in settings.gradle by @sksamuel in #5711
- Restrict runner modules and now/junit5 extensions to Linux-only builds by @sksamuel in #5712
- Refactor eventually to ensure wall-clock time usage by @sksamuel in #5705
- Add regression test for afterSpec not firing when spec excluded by tag by @sksamuel in #5715
- Adjust logic of when AndroidInstrumentation run producer is active by @sksamuel in #5718
- Add truncateTestNamesInGradle option to Gradle plugin by @sksamuel in #5716
- Handle nested and quoted paths in JSON key navigation by @jeggy in #5699
- Fix shrinker treating assume() skips as failures by @sksamuel in #5720
- Apply discard check to single-arbitrary property tests by @sksamuel in #5721
- Fix konan caching on windows by @sksamuel in #5725
- fix infinite loop caused by findValidSubPath by @alfonsoristorato in #5726
New Contributors
Full Changelog: v6.1.3...v6.1.4
v6.1.3
What's Changed
- clean-up-unused-class-PossibleMatch by @AlexCue987 in #5638
- document-shouldContainInOrder (#5640) by @AlexCue987 in #5641
- Restore method removed in 6.1 by @sksamuel in #5645
- Filter out abstract classes if passed to the engine by @sksamuel in #5646
- Add Android instrumentation support to the Intellij plugin by @sksamuel in #5647
- add shouldContainInOrderWithoutOverlaps by @AlexCue987 in #5649
- Fix hangs with nested runTest by @sksamuel in #5655
- Flatten nested test output in TeamCity for Native by @sksamuel in #5643
- Add option to gradle plugin to configure power assert by @sksamuel in #5657
- Adding forAll functions for rows with 11 to 22 elements by @NersesAM in #5661
- Add JUnit Jupiter test module for backwards compatibility by @sksamuel in #5664
- Fix source ref lookup for data tests by @sksamuel in #5663
- SpringExtension now supports test class inheritance by @rei-paypay in #5667
New Contributors
- @NersesAM made their first contribution in #5661
- @rei-paypay made their first contribution in #5667
Full Changelog: v6.1.2...v6.1.3
v6.1.2
What's Changed
- Improve JS execution to use common spec executor and fix after project listeners by @sksamuel in #5609
- Add test to confirm async calls in JS SpecExtension.intercept by @sksamuel in #5610
- Add option to the gradle plugin to always rerun tests by @sksamuel in #5636
Full Changelog: 6.1.2...v6.1.2
v6.1.1
What's Changed
- Simpify engine implementation and mark EngineContext fully internal by @sksamuel in #5585
- Remove use of coroutineContext as per intellij recommendations by @sksamuel in #5586
- Bump Ktor to 3.3.3 and remove unused
ktor-server-coredependency. by @sksamuel in #5587 - re-add koin and fix current docs version by @alfonsoristorato in #5590
- DOC - add koin to 6.1 - create next of 6.2 by @alfonsoristorato in #5591
- Remove ExperimentalKotest from test execution mode by @sksamuel in #5596
- Add MatcherResultBuilder for third parties to integrate matchers by @sksamuel in #5594
- Add action-junit-report to PRs by @sksamuel in #5593
- Restore JS tests module by @sksamuel in #5597
- Fix xmethod focus using DSL by @sksamuel in #5588
- Fix Test Execution fails when gradle configuration cache is enabled by @sksamuel in #5603
- Update KSP generation to skip private classes by @sksamuel in #5604
- reintroduce string spec tests with config to be root tests by @alfonsoristorato in #5608
Full Changelog: v6.1.0...v6.1.1
v6.1.0
The first Kotest release of 2026 is here - 6.1 'Bouncing Boimler'
- Compatible with Kotlin 2.0, 2.1, 2.2 and 2.3
- Enhanced data-testing with new syntax that mirrors the spec style to enable more intuitive tests. This also gives you control over how data tests interact with test lifecycle callbacks!
- Much improved IDE plugin support including running individual tests for native targets and fixes for many long standing issues. Re-run tests and jump to source for all nested tests in JVM mode
- The test framework has been updated with Jasmine style f-focused syntax to mirror the x-disabled syntax.
- Support for JUnit 6 via the new kotest-runner-junit6 module.
- The popular TestContainers extension has been updated to support Docker ComposeContainers. Also now with an option to pipe the container logs directly into the test output for easier debugging!
- Full support for the Gradle test-retry plugin.
- Many improvements and bug fixes to our assertions library including support for custom equality in shouldBe assertions
- New assertions added such as shouldBeAtMost(x) and shouldBeAtLeast(y) for primitives. A reminder that assertions don't require the Kotest test framework. They are still the best Kotlin assertions library, in our opinion, even if you are using JUnit or another test framework.
- Recreate race conditions easily using our parallel runner.
- Various property test improvements such as new Arb types for arrays and support for specifying Arb collection sizes globally. Just like assertions, the property testing library doesn't require the Kotest test framework.
What's Changed
- Removing deprecated EqualityMatcherResult by @sksamuel in #5239
- Migrate to Test Containers version 2 by @sksamuel in #5240
- Add specific JUnit 6 runner by @sksamuel in #5230
- Makes
beBooleanmatcher public by @LeoColman in #5241 - update kdoc for ComposeContainerProjectExtension by @alfonsoristorato in #5247
- Fix compatibility note for shouldThrowSoftly by @AlexCue987 in #5250
- support-nullable-primitive-arrays in Arb by @AlexCue987 in #5249
- Clarify assertions in core.md documentation by @AlexCue987 in #5253
- Add additional blog links to documentation by @AlexCue987 in #5254
- docs: fix typo in property test shrinking documentation by @jongheon1 in #5256
- Bump
kotlin-compile-testingto version 0.11.0 inlibs.versions.toml. by @sksamuel in #5251 - Added backwards compatible methods for nondeterministic testing by @sksamuel in #5258
- Fix config being loaded twice by @sksamuel in #5259
- Add
shouldContainAllInAnyOrdermatchers for collections by @sksamuel in #5228 - make containAllInAnyOrder ignore elements not in expected (#5264) by @AlexCue987 in #5265
- Update project_config.md to mention file name by @nkiesel in #5272
- make-containAllInAnyOrder-for-sequences-do-same-thing-as-collections … by @AlexCue987 in #5269
- handle duplicate test names in
InstancePerLeafandInstancePerTest(issue #5261) by @alfonsoristorato in #5274 - Added a special --tests filter for the intellij plugin by @sksamuel in #5165
- Fix typo in eventually.md: determistic => deterministic by @AlexCue987 in #5278
- continually-timeout-is-success take2 by @AlexCue987 in #5276
- Clarify default poll interval in continually documentation by @AlexCue987 in #5277
- Enhance continually.md with listener example by @AlexCue987 in #5282
- Enhance documentation for countdown latches usage by @AlexCue987 in #5281
- Add IncludeTestPatternDescriptorFilter to allow filtering via env var by @sksamuel in #5280
- Add cycle detection to equality checking to prevent StackOverflowError by @jongheon1 in #5266
- Allow tag expressions via env vars. by @sksamuel in #5285
- Add focused methods to spec styles by @sksamuel in #5141
- Add line endings to unix option in assertions. by @sksamuel in #5288
- Update dependency org.apache.kafka:kafka-clients to v3.9.1 by @renovate[bot] in #5295
- Update dependency io.mockk:mockk to v1.14.7 by @renovate[bot] in #5293
- Update dependency com.jayway.jsonpath:json-path to v2.10.0 by @renovate[bot] in #5300
- Update dependency com.charleskorn.kaml:kaml to v0.104.0 by @renovate[bot] in #5299
- Update dependency io.qameta.allure to v3.0.1 by @renovate[bot] in #5294
- Update testcontainers-java monorepo to v2.0.3 by @renovate[bot] in #5298
- Update koin to v4.2.0-beta2 by @renovate[bot] in #5297
- Allow global configuration of default range of arrays and collections in prop tests by @sksamuel in #5302
- Allow re-registering of specs in Junit for test-retry-plugin by @sksamuel in #5292
- Support Java21 SequencedSet in shouldContainsExactly by @sksamuel in #5303
- Update KSP generation to push platform specific code into the engine by @sksamuel in #5287
- Clarify empty collection assertion behavior + tests by @sksamuel in #5304
- Fix html report css links by @sksamuel in #5307
- Remove strictNumberEq from Eq and move into context by @sksamuel in #5290
- Update docs and more tests for testcontainers v2 by @sksamuel in #5305
- Add option to attach test container logs to test output by @sksamuel in #5306
- Arb.float() stops generating NaNs if the range is not 'full' by @sksamuel in #5308
- Update code snippet for eventually with retries to match described scenario by @kamilszymanski in #5311
- Rework Eq to generate errors lazily by @sksamuel in #5309
- use ClassSource for CONTAINER type tests by @alfonsoristorato in #5312
- remove KotestInternal from StringSpecScope by @alfonsoristorato in #5313
- remove KotestInternal from
RootTestWithConfigBuilderandRootContainerWithConfigBuilderby @alfonsoristorato in #5315 - Fixed beforeSpec in concurrency. by @sksamuel in #5314
- Publish JUnit6 module by @sksamuel in #5316
- Support custom eq registration by @sksamuel in #5286
- create withContexts and withTests for FreeSpec by @alfonsoristorato in #5318
- Update race_conditions.md by @AlexCue987 in #5320
- Merge intellij plugin by @sksamuel in #5321
- [Wasm] remove JsExport startUnitTests by @alex28sh in #5561
- extract the logic that yields sets of required length to a separate funciton, and test all its edge cases explicitly by @AlexCue987 in #5559
- Updated SpecRef's to contain the FQN by @sksamuel in #5562
- Improve Boolean matchers documentation by @LeoColman in #5557
- Refactor Kotest IntelliJ plugin to run Gradle-based individual tests for all targets by @sksamuel in #5565
- Clarifies order of spring callbacks by @sksamuel in #5317
- add handler of indirect cycles when calling print and simplifactions of print by @alfonsoristorato in #5564
- Fix wildcard test filtering crash in NestedTestsArgParser (fixes #5242) by @jay05410 in #5567
- Only show JUnit ignore reasons if enabled by @sksamuel in #5566
- Support embebbed location hints in team city output by @sksamuel in #5568
- Refactor TeamCity message bu...
v6.0.7
What's Changed
- Update dependency com.google.jimfs:jimfs to v1.3.1 by @renovate[bot] in #5235
- Update dependency io.github.pdvrieze.xmlutil:serialization to v0.91.3 by @renovate[bot] in #5236
- Update dependency io.projectreactor.tools:blockhound to v1.0.15.RELEASE by @renovate[bot] in #5238
- Update dependency io.mockk:mockk to v1.14.6 by @renovate[bot] in #5237
Full Changelog: v6.0.6...v6.0.7
v6.0.6
What's Changed
- Clarify mock features in Kotest documentation by @AlexCue987 in #5205
- Specific data test methods for various specs by @alfonsoristorato in #5144
- Another example for race conditions - mocking LocalDateTime.now() by @AlexCue987 in #5209
- atMost-for-int (#5210) by @AlexCue987 in #5211
- atMost-for-long (#5212) by @AlexCue987 in #5213
- Update shouldBeOneOf assertion description by @AlexCue987 in #5214
- Clarify shouldContainAll assertion description by @AlexCue987 in #5215
- remove-code-duplication-in-GreaterThanOrEqual.kt by @AlexCue987 in #5224
- Update to Gradle 9.2.1 & remove some potentially old workarounds by @nhajratw in #5176
- more-info-for-oneOf by @AlexCue987 in #5222
- Remove all uses of deprecated ComparableMatcherResult by @sksamuel in #5231
- add-atLeast-atMost-for-BigDecimal by @AlexCue987 in #5226
- Add project config option for concurrency order by @sksamuel in #5232
- Reenable koin by @sksamuel in #5233
- Remove usage of toFile in path matchers by @sksamuel in #5229
- Avoid creating fresh root for the first test in
InstancePerLeafby @T45K in #5201 - Alex/arbs support arrays of primitives by @AlexCue987 in #5220
Full Changelog: v6.0.5...v6.0.6
v6.0.5
What's Changed
- Fix:
InstancePerLeaftests fail when a test leaf has siblings by @T45K in #5139 - fix(arrow): collect clues on failures by @RafeArnold in #5140
- add max timeout bounds to continually and retry by @alfonsoristorato in #5145
- Move
spring.boot.starter.webdependency fromjvmMaintojvmTest. by @sksamuel in #5146 - Remove uuid usage to fix JS on certain version of node by @sksamuel in #5150
- Remove periods from test names only at TCSM stage by @sksamuel in #5149
- Fix wasmJS support for browser tests by @sksamuel in #5148
- Fix PR workflow for windows by @sksamuel in #5151
- Expand behavior spec tags to given and when by @sksamuel in #5152
- update to kotlin 2.2.20 by @nhajratw in #5153
- update to gradle 9.1.0 by @nhajratw in #5158
- docs: Update Maven links and badges in Extensions docs by @noojung in #5173
- allow to verify if json schema prop is null (addresses #5172) by @alfonsoristorato in #5175
- allow to verify if Boolean property in jsonSchema is true or false (addresses #5171) by @alfonsoristorato in #5174
- fix(deps): update dependency com.zaxxer:hikaricp to v6.3.3 by @renovate[bot] in #5179
- fix(deps): update dependency dev.reformator.stacktracedecoroutinator:stacktrace-decoroutinator-jvm to v2.5.8 by @renovate[bot] in #5180
- fix-data-class-eq by @AlexCue987 in #5178
- Alex/reproduce race conditions (#5162) by @AlexCue987 in #5163
shouldBeEqualToUsingFieldswith different types by @alfonsoristorato in #5124- Fix pr builds by @tKe in #5187
- add
shouldBeEqualToDifferentTypeIgnoringFieldsby @alfonsoristorato in #5194 - Use deprecated overloads to highlight non-determinstic arbitrary usage by @tKe in #5186
- chore: fix master builds by @tKe in #5198
- make shouldCompile/shouldNotCompile support multiple files by @mirror-kt in #5182
- Make
SpringExtensionopen and introduce variants by @sksamuel in #5195 - Support duplicated spec names in separate packages for KSP by @sksamuel in #5197
- Skip modules in PR on !linux when JVM only by @sksamuel in #5199
- use atLeast and atMost for Double (#5191) by @AlexCue987 in #5192
- Fix StackOverflowError on cyclic maps/collections (fixes #5105) by @sksamuel in #5154
New Contributors
- @RafeArnold made their first contribution in #5140
- @mirror-kt made their first contribution in #5182
Full Changelog: 6.0.4...v6.0.5
v6.0.4
What's Changed
- Restore io.kotest.assertions.fail by @sksamuel in #5083
- feat: add Arb for kotlin.time.Instant by @tKe in #5085
- Positive Boolean matchers return non-null by contract by @JordanLongstaff in #5088
- Update spring.md by @noojung in #5099
- Update extension modules list in release notes by @AlexCue987 in #5102
- Accommodate a recent breaking change of annotation name from EnabledCondition to Condition by @AlexCue987 in #5111
- Record kotest-assertions-api changes in release_6.0.md by @TWiStErRob in #5115
- add days when daylight saving time is on/off to edge cases of Arb.datesBetween by @AlexCue987 in #5092
- Add missing Extension marker to core extension and listeners. by @Jadarma in #5097
- Increment the assertion counter in Arrow assertions that do not call core assertions by @jenssuhr in #5090
- Fix kotest plugin in project with Kotlin 2.2.20 by @walterbrebels in #5106
PackageConfigchecked bug by @alfonsoristorato in #5131- Alex/fail softly (#5128) by @AlexCue987 in #5129
- Restrict @ApplyExtension to the target class by @sksamuel in #5133
- Enable to call
afterSpechooks onInstancePerLeafcorrectly by @T45K in #5114 - Add timeout handling to
eventuallyby @sksamuel in #5134
New Contributors
- @noojung made their first contribution in #5099
- @jenssuhr made their first contribution in #5090
- @walterbrebels made their first contribution in #5106
Full Changelog: v6.0.3...v6.0.4