Test en Kotlin : frameworks et outils pour un code de qualité

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Test en Kotlin : frameworks et outils pour un code de qualité



Kotlin est un langage de programmation moderne fonctionnant sur la JVM. Grâce à sa compatibilité avec Java, il est possible d'utiliser des frameworks Java classiques (JUnit, Mockito) pour tester le code Kotlin, ainsi que des outils modernes spécialement conçus pour Kotlin. Dans cet article, nous analyserons les principaux frameworks, leurs caractéristiques et fournirons des exemples pratiques.



1. JUnit 5 — la base des tests



JUnit 5 est le framework standard pour les tests unitaires sur la JVM. Il fonctionne parfaitement avec Kotlin grâce à la prise en charge des lambdas, des fonctions d'extension et des classes de données.



import org.junit.jupiter.api.Testimport org.junit.jupiter.api.Assertions.*

class CalculatorTest { @Test fun `addition should return correct sum`() { val result = Calculator().add(2, 3) assertEquals(5, result) }}


Caractéristiques de JUnit 5 en Kotlin :

  • Les noms de tests peuvent être écrits entre accents graves avec des espaces — la lisibilité est améliorée
  • Prise en charge des tests paramétrés via @ParameterizedTest
  • Fonctions d'assertion intégrées (assertAll, assertThrows)
  • Se combine facilement avec MockK et Mockito


2. Kotest — un framework de nouvelle génération



Kotest (anciennement KotlinTest) est un framework puissant écrit entièrement en Kotlin. Il propose de nombreux styles de description de tests (StringSpec, BehaviorSpec, FunSpec, etc.).



import io.kotest.core.spec.style.StringSpecimport io.kotest.matchers.shouldBe

class StringSpecExample : StringSpec({ "length should return correct size" { "hello".length shouldBe 5 } "startsWith should work" { "world".startsWith("wo") shouldBe true }})


Avantages de Kotest :

  • Plus de 200 matchers intégrés (shouldBe, shouldContain, shouldBeGreaterThan)
  • Prise en charge des tests basés sur les propriétés (génération de données aléatoires)
  • Fournisseurs de données intégrés pour les tests tabulaires
  • Intégration complète avec Gradle et Maven


3. MockK — des mocks pour Kotlin



MockK est une bibliothèque pour créer des objets mock, spécialement conçue pour Kotlin. Elle prend en compte la null-safety, les coroutines et les fonctions d'extension.



import io.mockk.everyimport io.mockk.mockkimport io.mockk.verifyimport org.junit.jupiter.api.Test

class UserServiceTest { @Test fun `should call repository`() { val repo = mockk<UserRepository>() every { repo.findUser(1) } returns User("Alice")

val service = UserService(repo) service.getUserName(1)

verify { repo.findUser(1) } }}


Fonctionnalités clés de MockK :

  • Prise en charge de spy (mocking partiel)
  • Fonctionne avec les fonctions suspend et les coroutines (coEvery, coVerify)
  • Matchers pratiques pour les arguments (any(), capture())
  • Réinitialisation automatique des mocks après le test


4. Spek — style de test BDD



Spek est un framework pour le Behaviour-Driven Development. Il permet de décrire les tests au format « Given-When-Then ».



import org.spekframework.spek2.Spekimport org.spekframework.spek2.style.specification.describe

class CalculatorSpek : Spek({ describe("Calculator") { val calc by memoized { Calculator() }

context("addition") { it("returns sum of two numbers") { val result = calc.add(2, 3) assertEquals(5, result) } } }})


Caractéristiques de Spek :

  • Structure de tests lisible pour les spécifications métier
  • Prise en charge des contextes imbriqués et des fixtures globales
  • Intégration avec

Recommendations