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.
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.
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 beBoolean matcher 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-testing to version 0.11.0 in libs.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 shouldContainAllInAnyOrder matchers 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 InstancePerLeaf and InstancePerTest (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
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
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 RootTestWithConfigBuilder and RootContainerWithConfigBuilder by @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