Testes em Kotlin: frameworks e ferramentas para código de qualidade

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Testes em Kotlin: frameworks e ferramentas para código de qualidade



Kotlin é uma linguagem de programação moderna que roda sobre a JVM. Graças à compatibilidade com Java, para testar código Kotlin é possível usar frameworks Java clássicos (JUnit, Mockito), bem como ferramentas modernas escritas especificamente para Kotlin. Neste artigo, analisaremos os principais frameworks, suas características e daremos exemplos práticos.



1. JUnit 5 — a base dos testes



JUnit 5 é o framework padrão para testes unitários na JVM. Funciona muito bem com Kotlin graças ao suporte a lambdas, funções de extensão e data classes.



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 do JUnit 5 em Kotlin:

  • Nomes de teste podem ser escritos entre crases com espaços — melhorando a legibilidade
  • Suporte a testes parametrizados via @ParameterizedTest
  • Funções de asserção integradas (assertAll, assertThrows)
  • Combina facilmente com MockK e Mockito


2. Kotest — framework de nova geração



Kotest (antigo KotlinTest) é um framework poderoso, escrito em Kotlin do zero. Oferece vários estilos de descrição de testes (StringSpec, BehaviorSpec, FunSpec e outros).



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


Vantagens do Kotest:

  • Mais de 200 matchers integrados (shouldBe, shouldContain, shouldBeGreaterThan)
  • Suporte a property-based testing (geração de dados aleatórios)
  • Provedores de dados integrados para testes tabulares
  • Integração completa com Gradle e Maven


3. MockK — mocks para Kotlin



MockK é uma biblioteca para criar objetos mock, projetada especificamente para Kotlin. Leva em consideração null-safety, corrotinas e funções de extensão.



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


Principais recursos do MockK:

  • Suporte a spy (mock parcial)
  • Trabalho com funções suspend e corrotinas (coEvery, coVerify)
  • Matchers convenientes para argumentos (any(), capture())
  • Zeração automática de mocks após o teste


4. Spek — estilo BDD de teste



Spek é um framework para Behaviour-Driven Development. Permite descrever testes no 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 do Spek:

  • Estrutura de teste legível para especificações de negócio
  • Suporte a contextos aninhados e fixtures globais
  • Integração com

Recommendations