Kotlin:
Testien kirjoittaminen

Kuinka:

Kotlin tukee testivetoinen kehitystä eri frameworkien avulla, suosituimpina JUnit, Kotest ja MockK mockaamiseen. Tässä on yksinkertainen esimerkki käyttäen JUnitia:

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

class CalculatorTest {

    @Test
    fun `lisää kaksi numeroa`() {
        val calculator = Calculator()
        val tulos = calculator.add(2, 3)
        assertEquals(5, tulos)
    }
}

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

Esimerkki Tuloste

Testi läpi.

Monimutkaisempaa testaustapaa käyttäen Kotestia, joka tarjoaa idiomaattisemman Kotlin-testikirjoitustyylisi, katso esimerkki alla:

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

class CalculatorSpec : StringSpec({
    "2 ja 3 yhteenlaskun tulisi palauttaa 5" {
        val calculator = Calculator()
        calculator.add(2, 3) shouldBe 5
    }
})

Käyttäen MockK:ta testaamiseen mockien kanssa:

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 palvelu = Service(repository)

    @Test
    fun `hanki data palauttaa mockatun datan`() {
        every { repository.getData() } returns "Mockattu Data"

        val tulos = palvelu.getData()

        assertEquals("Mockattu Data", tulos)
    }
}

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

interface Repository {
    fun getData(): String
}

Esimerkki Tuloste

Testi läpi.

Nämä esimerkit havainnollistavat perusteet yksikkötestien kirjoittamisesta Kotlinissa. Sovelluksesi kasvaessa harkitse syventymistä edistyneempiin testaustekniikoihin ja -työkaluihin, joita kunkin kehyksen avulla tarjotaan.