Kotlin:
Scrivere test

Come fare:

Kotlin supporta lo sviluppo guidato dai test con vari framework, i più popolari sono JUnit, Kotest e MockK per il mocking. Ecco un semplice esempio utilizzando JUnit:

import org.junit.jupiter.api.Test
import kotlin.test.assertEquals

class CalculatorTest {

    @Test
    fun `aggiunge due numeri`() {
        val calcolatrice = Calculator()
        val risultato = calcolatrice.add(2, 3)
        assertEquals(5, risultato)
    }
}

class Calculator {
    fun add(a: Int, b: Int): Int = a + b
}

Output dell’esempio

Test superato.

Per un approccio ai test più sofisticato con Kotest, che offre uno stile di scrittura dei test più idiomatico per Kotlin, vedi l’esempio di seguito:

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

class CalculatorSpec : StringSpec({
    "aggiungere 2 e 3 dovrebbe ritornare 5" {
        val calcolatrice = Calculator()
        calcolatrice.add(2, 3) shouldBe 5
    }
})

Utilizzando MockK per testare con mock:

import io.mockk.every
import io.mockk.mockk
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals

class ServiceTest {

    private val repository = mockk<Repository>()
    private val service = Service(repository)

    @Test
    fun `get data ritorna dati mockati`() {
        every { repository.getData() } returns "Dati Mockati"

        val risultato = service.getData()

        assertEquals("Dati Mockati", risultato)
    }
}

class Service(private val repository: Repository) {
    fun getData(): String = repository.getData()
}

interface Repository {
    fun getData(): String
}

Output dell’esempio

Test superato.

Questi esempi illustrano le basi della scrittura di test unitari in Kotlin. Man mano che la tua applicazione cresce, considera l’esplorazione di tecniche e strumenti di test più avanzati forniti da ogni framework.