Pruebas en Kotlin: frameworks y herramientas para código de calidad

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Pruebas en Kotlin: frameworks y herramientas para código de calidad



Kotlin es un lenguaje de programación moderno que funciona sobre la JVM. Gracias a su compatibilidad con Java, para probar código Kotlin se pueden usar frameworks clásicos de Java (JUnit, Mockito), así como herramientas modernas escritas específicamente para Kotlin. En este artículo analizaremos los principales frameworks, sus características y proporcionaremos ejemplos prácticos.



1. JUnit 5 — la base de las pruebas



JUnit 5 es el framework estándar para pruebas unitarias en la JVM. Funciona excelentemente con Kotlin gracias al soporte de lambdas, funciones de extensión y clases de datos.



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) }}


Características de JUnit 5 en Kotlin:

  • Los nombres de las pruebas se pueden escribir con acentos graves y espacios — mejora la legibilidad
  • Soporte para pruebas parametrizadas mediante @ParameterizedTest
  • Funciones de aserción integradas (assertAll, assertThrows)
  • Se combina fácilmente con MockK y Mockito


2. Kotest — framework de nueva generación



Kotest (anteriormente KotlinTest) es un potente framework escrito desde cero en Kotlin. Ofrece múltiples estilos para describir pruebas (StringSpec, BehaviorSpec, FunSpec y otros).



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 }})


Ventajas de Kotest:

  • Más de 200 matchers integrados (shouldBe, shouldContain, shouldBeGreaterThan)
  • Soporte para property-based testing (generación de datos aleatorios)
  • Proveedores de datos integrados para pruebas tabulares
  • Integración completa con Gradle y Maven


3. MockK — mocks para Kotlin



MockK es una biblioteca para crear objetos mock, diseñada específicamente para Kotlin. Tiene en cuenta la seguridad de nulos, las corrutinas y las funciones de extensión.



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) } }}


Funcionalidades clave de MockK:

  • Soporte para spy (mockeo parcial)
  • Trabajo con funciones suspend y corrutinas (coEvery, coVerify)
  • Matchers convenientes para argumentos (any(), capture())
  • Limpieza automática de mocks después de la prueba


4. Spek — estilo BDD de pruebas



Spek es un framework para Behaviour-Driven Development. Permite describir pruebas en el formato «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) } } }})


Características de Spek:

  • Estructura de pruebas legible para especificaciones de negocio
  • Soporte para contextos anidados y fixtures globales
  • Integración con

Recommendations