CheckOps home

Tools directory

K

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.

Visit website

Latest public signals

Not refreshed yet. Refresh reads the public site and, when the entry has a GitHub repository, the latest release.

Visit Website

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

  1. Multiple spec styles: FunSpec, StringSpec, DescribeSpec, BehaviorSpec and more.
  2. Rich assertions: Infix matchers with readable failures.
  3. Property testing: Arb generators with shrinking.
  4. Kotlin Multiplatform: Tests for JVM and other Kotlin targets.

Pros

  1. Free to use: Open source under the Apache-2.0 licence, so the core tool costs nothing to use.
  2. Actively maintained: The repository had commits as recent as 10 November 2026.
  3. Community: About 4,800 GitHub stars.

Cons

  1. Kotlin-only: Not for Java-only codebases.
  2. Style sprawl: Choosing among many spec styles needs team conventions.
// 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.

  1. Kotlin teams wanting idiomatic tests, assertions and property testing in one toolkit.
  2. 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.