New
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 https://github.com/kotest/kotest/pull/5239
- Migrate to Test Containers version 2 by @sksamuel in https://github.com/kotest/kotest/pull/5240
- Add specific JUnit 6 runner by @sksamuel in https://github.com/kotest/kotest/pull/5230
- Makes
beBooleanmatcher public by @LeoColman in https://github.com/kotest/kotest/pull/5241 - update kdoc for ComposeContainerProjectExtension by @alfonsoristorato in https://github.com/kotest/kotest/pull/5247
- Fix compatibility note for shouldThrowSoftly by @AlexCue987 in https://github.com/kotest/kotest/pull/5250
- support-nullable-primitive-arrays in Arb by @AlexCue987 in https://github.com/kotest/kotest/pull/5249
- Clarify assertions in core.md documentation by @AlexCue987 in https://github.com/kotest/kotest/pull/5253
- Add additional blog links to documentation by @AlexCue987 in https://github.com/kotest/kotest/pull/5254
- docs: fix typo in property test shrinking documentation by @jongheon1 in https://github.com/kotest/kotest/pull/5256
- Bump
kotlin-compile-testingto version 0.11.0 inlibs.versions.toml. by @sksamuel in https://github.com/kotest/kotest/pull/5251 - Added backwards compatible methods for nondeterministic testing by @sksamuel in https://github.com/kotest/kotest/pull/5258
- Fix config being loaded twice by @sksamuel in https://github.com/kotest/kotest/pull/5259
- Add
shouldContainAllInAnyOrdermatchers for collections by @sksamuel in https://github.com/kotest/kotest/pull/5228 - make containAllInAnyOrder ignore elements not in expected (#5264) by @AlexCue987 in https://github.com/kotest/kotest/pull/5265
- Update project_config.md to mention file name by @nkiesel in https://github.com/kotest/kotest/pull/5272
- make-containAllInAnyOrder-for-sequences-do-same-thing-as-collections … by @AlexCue987 in https://github.com/kotest/kotest/pull/5269
- handle duplicate test names in
InstancePerLeafandInstancePerTest(issue #5261) by @alfonsoristorato in https://github.com/kotest/kotest/pull/5274 - Added a special --tests filter for the intellij plugin by @sksamuel in https://github.com/kotest/kotest/pull/5165
- Fix typo in eventually.md: determistic => deterministic by @AlexCue987 in https://github.com/kotest/kotest/pull/5278
- continually-timeout-is-success take2 by @AlexCue987 in https://github.com/kotest/kotest/pull/5276
- Clarify default poll interval in continually documentation by @AlexCue987 in https://github.com/kotest/kotest/pull/5277
- Enhance continually.md with listener example by @AlexCue987 in https://github.com/kotest/kotest/pull/5282
- Enhance documentation for countdown latches usage by @AlexCue987 in https://github.com/kotest/kotest/pull/5281
- Add IncludeTestPatternDescriptorFilter to allow filtering via env var by @sksamuel in https://github.com/kotest/kotest/pull/5280
- Add cycle detection to equality checking to prevent StackOverflowError by @jongheon1 in https://github.com/kotest/kotest/pull/5266
- Allow tag expressions via env vars. by @sksamuel in https://github.com/kotest/kotest/pull/5285
- Add focused methods to spec styles by @sksamuel in https://github.com/kotest/kotest/pull/5141
- Add line endings to unix option in assertions. by @sksamuel in https://github.com/kotest/kotest/pull/5288
- Update dependency org.apache.kafka:kafka-clients to v3.9.1 by @renovate[bot] in https://github.com/kotest/kotest/pull/5295
- Update dependency io.mockk:mockk to v1.14.7 by @renovate[bot] in https://github.com/kotest/kotest/pull/5293
- Update dependency com.jayway.jsonpath:json-path to v2.10.0 by @renovate[bot] in https://github.com/kotest/kotest/pull/5300
- Update dependency com.charleskorn.kaml:kaml to v0.104.0 by @renovate[bot] in https://github.com/kotest/kotest/pull/5299
- Update dependency io.qameta.allure to v3.0.1 by @renovate[bot] in https://github.com/kotest/kotest/pull/5294
- Update testcontainers-java monorepo to v2.0.3 by @renovate[bot] in https://github.com/kotest/kotest/pull/5298
- Update koin to v4.2.0-beta2 by @renovate[bot] in https://github.com/kotest/kotest/pull/5297
- Allow global configuration of default range of arrays and collections in prop tests by @sksamuel in https://github.com/kotest/kotest/pull/5302
- Allow re-registering of specs in Junit for test-retry-plugin by @sksamuel in https://github.com/kotest/kotest/pull/5292
- Support Java21 SequencedSet in shouldContainsExactly by @sksamuel in https://github.com/kotest/kotest/pull/5303
- Update KSP generation to push platform specific code into the engine by @sksamuel in https://github.com/kotest/kotest/pull/5287
- Clarify empty collection assertion behavior + tests by @sksamuel in https://github.com/kotest/kotest/pull/5304
- Fix html report css links by @sksamuel in https://github.com/kotest/kotest/pull/5307
- Remove strictNumberEq from Eq and move into context by @sksamuel in https://github.com/kotest/kotest/pull/5290
- Update docs and more tests for testcontainers v2 by @sksamuel in https://github.com/kotest/kotest/pull/5305
- Add option to attach test container logs to test output by @sksamuel in https://github.com/kotest/kotest/pull/5306
- Arb.float() stops generating NaNs if the range is not 'full' by @sksamuel in https://github.com/kotest/kotest/pull/5308
- Update code snippet for eventually with retries to match described scenario by @kamilszymanski in https://github.com/kotest/kotest/pull/5311
- Rework Eq to generate errors lazily by @sksamuel in https://github.com/kotest/kotest/pull/5309
- use ClassSource for CONTAINER type tests by @alfonsoristorato in https://github.com/kotest/kotest/pull/5312
- remove KotestInternal from StringSpecScope by @alfonsoristorato in https://github.com/kotest/kotest/pull/5313
- remove KotestInternal from
RootTestWithConfigBuilderandRootContainerWithConfigBuilderby @alfonsoristorato in https://github.com/kotest/kotest/pull/5315 - Fixed beforeSpec in concurrency. by @sksamuel in https://github.com/kotest/kotest/pull/5314
- Publish JUnit6 module by @sksamuel in https://github.com/kotest/kotest/pull/5316
- Support custom eq registration by @sksamuel in https://github.com/kotest/kotest/pull/5286
- create withContexts and withTests for FreeSpec by @alfonsoristorato in https://github.com/kotest/kotest/pull/5318
- Update race_conditions.md by @AlexCue987 in https://github.com/kotest/kotest/pull/5320
- Merge intellij plugin by @sksamuel in https://github.com/kotest/kotest/pull/5321
- [Wasm] remove JsExport startUnitTests by @alex28sh in https://github.com/kotest/kotest/pull/5561
- extract the logic that yields sets of required length to a separate funciton, and test all its edge cases explicitly by @AlexCue987 in https://github.com/kotest/kotest/pull/5559
- Updated SpecRef's to contain the FQN by @sksamuel in https://github.com/kotest/kotest/pull/5562
- Improve Boolean matchers documentation by @LeoColman in https://github.com/kotest/kotest/pull/5557
- Refactor Kotest IntelliJ plugin to run Gradle-based individual tests for all targets by @sksamuel in https://github.com/kotest/kotest/pull/5565
- Clarifies order of spring callbacks by @sksamuel in https://github.com/kotest/kotest/pull/5317
- add handler of indirect cycles when calling print and simplifactions of print by @alfonsoristorato in https://github.com/kotest/kotest/pull/5564
- Fix wildcard test filtering crash in NestedTestsArgParser (fixes #5242) by @jay05410 in https://github.com/kotest/kotest/pull/5567
- Only show JUnit ignore reasons if enabled by @sksamuel in https://github.com/kotest/kotest/pull/5566
- Support embebbed location hints in team city output by @sksamuel in https://github.com/kotest/kotest/pull/5568
- Refactor TeamCity message builders to use testName for finished methods by @sksamuel in https://github.com/kotest/kotest/pull/5569
- matching json, find all differences, top level and nested - do not stop at first diff by @AlexCue987 in https://github.com/kotest/kotest/pull/5573
- add-similarity-to-containAllInAnyOrder by @AlexCue987 in https://github.com/kotest/kotest/pull/5576
- Add javadocs for shouldContainAll and shouldNotContainAll functions by @AlexCue987 in https://github.com/kotest/kotest/pull/5577
- ensure nested tests within a parent are run when the parent is run with --tests filter by @alfonsoristorato in https://github.com/kotest/kotest/pull/5579
- add a CRON based gh action to run kotest-examples repo tests with latest release from master by @alfonsoristorato in https://github.com/kotest/kotest/pull/5570
- Support jump to source for classes in kotlin native by @sksamuel in https://github.com/kotest/kotest/pull/5580
- Add end to end tests for some Gradle test filter formats by @sksamuel in https://github.com/kotest/kotest/pull/5582
- Fixed a bunch of warnings around test enginer launcher usage by @sksamuel in https://github.com/kotest/kotest/pull/5581
- 6.1 docs by @alfonsoristorato in https://github.com/kotest/kotest/pull/5584
New Contributors
- @jongheon1 made their first contribution in https://github.com/kotest/kotest/pull/5256
- @nkiesel made their first contribution in https://github.com/kotest/kotest/pull/5272
- @kamilszymanski made their first contribution in https://github.com/kotest/kotest/pull/5311
- @alex28sh made their first contribution in https://github.com/kotest/kotest/pull/5561
- @jay05410 made their first contribution in https://github.com/kotest/kotest/pull/5567
Full Changelog: https://github.com/kotest/kotest/compare/v6.0.7...v6.1.0