Sobes.tech
Junior

Kokias bibliotekas naudojate testavimui Kotlin'e?

sobes.tech AI

Atsakymas iš AI

  • JUnit 5: Standartinis JVM modulinių testų rėmas. Naudojamas daugiausia vienetiniams testams.

  • MockK: Objektų ir elgsenos mokinimo biblioteka. Patogu kurti mokius, stabus ir patvirtinti sąveiką tarp objektų.

  • Kotest: Daugiakomponentinis testavimo rėmas, palaikantis įvairius testų rašymo stilius (Spec, WordSpec, StringSpec ir kt.). Dažnai naudojamas rašyti išraiškingesnius ir struktūruotus testus.

  • Truth: Patvirtinimų (assertions) kūrimo biblioteka. Padaro testus aiškesnius.

  • Robolectric: Android programėlių testavimo rėmas be virtualaus įrenginio ar emuliatoriaus. Imituoja Android aplinką JVM.

  • Espresso: Google rėmas Android naudotojo sąsajos testavimui. Naudojamas integraciniams ir UI testams Android projektuose.

MockK naudojimo pavyzdys:

// Reikalingų klasių importavimas
import io.mockk.*
import org.junit.jupiter.api.Test

// Testuojamos klasės pavyzdys
class MyService(private val dependency: Dependency) {
    fun processData(data: String): String {
        val processed = dependency.process(data)
        return "Result: $processed"
    }
}

// Moko priklausomybės klasės pavyzdys
interface Dependency {
    fun process(input: String): String
}

class MyServiceTest {

    @Test
    fun testProcessData() {
        // Moko priklausomybės sukūrimas
        val mockDependency = mockk<Dependency>()

        // Moko elgsenos nustatymas
        every { mockDependency.process("input") } returns "processed_data"

        // Testuojamos klasės sukūrimas su mokiu
        val myService = MyService(mockDependency)

        // Metodo iškvietimas
        val result = myService.processData("input")

        // Rezultato patikrinimas
        assert(result == "Result: processed_data")

        // Moko metodo iškvietimo patikrinimas
        verify { mockDependency.process("input") }
    }
}