Kotlin:
Pisanie testów

Jak to zrobić:

Kotlin wspiera rozwój sterowany testami z wykorzystaniem różnych frameworków, z których najpopularniejsze to JUnit, Kotest i MockK do tworzenia mocków. Oto prosty przykład użycia JUnit:

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

class CalculatorTest {

    @Test
    fun `dodaje dwie liczby`() {
        val calculator = Calculator()
        val result = calculator.add(2, 3)
        assertEquals(5, result)
    }
}

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

Przykładowy Wynik

Test zakończony powodzeniem.

Dla bardziej zaawansowanego podejścia do testowania z wykorzystaniem Kotest, który oferuje bardziej idiomatyczny styl pisania testów w Kotlinie, zobacz poniższy przykład:

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

class CalculatorSpec : StringSpec({
    "dodanie 2 i 3 powinno zwrócić 5" {
        val calculator = Calculator()
        calculator.add(2, 3) shouldBe 5
    }
})

Użycie MockK do testowania z mockami:

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 zwraca zmockowane dane`() {
        every { repository.getData() } returns "Mocked Data"

        val result = service.getData()

        assertEquals("Mocked Data", result)
    }
}

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

interface Repository {
    fun getData(): String
}

Przykładowy Wynik

Test zakończony powodzeniem.

Te przykłady ilustrują podstawy pisania testów jednostkowych w Kotlinie. W miarę wzrostu aplikacji warto rozważyć badanie bardziej zaawansowanych technik testowania oraz narzędzi oferowanych przez każdy framework.