CheckOps
Kotest
Kotest is an Apache-2.0 Kotlin multiplatform test framework with multiple testing styles, a large assertions library and built-in property-based testing.
Latest public signals
Not refreshed yet. Refresh reads the public site and, when the entry has a GitHub repository, the latest release.
Introduction
Kotest is a flexible testing framework for Kotlin, with support for Kotlin Multiplatform. It is made of three parts that can be used independently: a test framework, an assertions library and a property-testing module. Many teams use Kotest assertions with JUnit, or the full framework on its own.
The framework offers several spec styles, including FunSpec, StringSpec, DescribeSpec, BehaviorSpec (given/when/then) and ShouldSpec, so teams can choose a style familiar from other ecosystems. Features include data-driven testing, coroutine support, test lifecycle hooks and extensions, configurable isolation modes, tags and conditional execution, and an IntelliJ plugin. Assertions are written as infix matchers (result shouldBe 5, list shouldContainExactly listOf(1, 2)) with hundreds of matchers. Property testing generates inputs with Arb generators and shrinks failures, similar to QuickCheck. Version 6.2.6 was released on 14 October 2026.
The source code is at kotest/kotest on GitHub under the Apache-2.0 licence, with about 4,800 stars; the most recent commit was on 10 November 2026.
Features
- Multiple spec styles: FunSpec, StringSpec, DescribeSpec, BehaviorSpec and more.
- Rich assertions: Infix matchers with readable failures.
- Property testing: Arb generators with shrinking.
- Kotlin Multiplatform: Tests for JVM and other Kotlin targets.
Pros
- Free to use: Open source under the Apache-2.0 licence, so the core tool costs nothing to use.
- Actively maintained: The repository had commits as recent as 10 November 2026.
- Community: About 4,800 GitHub stars.
Cons
- Kotlin-only: Not for Java-only codebases.
- Style sprawl: Choosing among many spec styles needs team conventions.
Usage and Links (Example)
// build.gradle.kts
dependencies {
testImplementation("io.kotest:kotest-runner-junit5:<version>")
testImplementation("io.kotest:kotest-assertions-core:<version>")
testImplementation("io.kotest:kotest-property:<version>")
}
tasks.test { useJUnitPlatform() }
class PricingTest : FunSpec({
test("applies discount") {
Pricing.apply(100, 10) shouldBe 90
}
test("discount never exceeds price") {
checkAll(Arb.int(0..10_000), Arb.int(0..100)) { price, pct ->
Pricing.apply(price, pct) shouldBeLessThanOrEqual price
}
}
})
Resources:
Pricing
Kotest is free and open source under the Apache-2.0 licence.
Recommended for?
- Kotlin teams wanting idiomatic tests, assertions and property testing in one toolkit.
- Multiplatform projects sharing tests across targets.
Conclusion
Kotest is the most complete Kotlin-native testing toolkit, combining flexible spec styles, strong assertions and property-based testing.
Alternatives
Other tools on CheckOps that cover similar ground. Open a page, or compare one with Kotest side by side.
JJUnit 5JUnit 5 is the current JUnit for Java and the JVM: Jupiter for new tests, Platform to launch them, Vintage to run JUnit 4.Compare with Kotest
MMockKMockK is an Apache-2.0 mocking library built for Kotlin, supporting final classes, objects, coroutines, extension functions and top-level functions with a concise DSL.Compare with Kotest
SSpock FrameworkSpock is an Apache-2.0 BDD-style testing and specification framework for Java and Groovy applications, with given/when/then blocks, powerful data-driven tests and built-in mocking, running on the JUnit Platform.Compare with Kotest
Jjqwikjqwik is an EPL-2.0 property-based testing engine for the JUnit Platform, letting Java and Kotlin developers write properties with generated, shrinking inputs alongside regular JUnit 5 tests.Compare with Kotest
AAssertJAssertJ is an Apache-2.0 fluent assertions library for Java, with rich, discoverable assertions for core types, collections, exceptions, dates and more, plus soft assertions and custom assertion generation.Compare with Kotest
TTestNGTestNG is an Apache-2.0 testing framework for Java, inspired by JUnit and NUnit, with annotations, groups, dependencies, data providers, parallel execution and XML suite configuration; it requires Java 11+.Compare with Kotest