Sobes.tech
Junior

Aké knižnice používate na testovanie v Kotlin?

sobes.tech AI

Odpoveď od AI

  • JUnit 5: Štandardný rámec pre jednotkové testy v JVM. Používam ho pre väčšinu jednotkových testov.

  • MockK: Knižnica na mockovanie objektov a správania. Užitečná na vytváranie mockov, stubov a overovanie interakcií.

  • Kotest: Viacúčelový rámec pre testovanie, ktorý podporuje rôzne štýly písania testov (Spec, WordSpec, StringSpec a pod.). Často ho používam na písanie výstižnejších a štruktúrovanejších testov.

  • Truth: Knižnica na tvorbu čitateľných assertions. Uľahčuje porozumenie testom.

  • Robolectric: Rámec na testovanie Android aplikácií bez virtuálneho zariadenia alebo emulátora. Napodobňuje prostredie Android na JVM.

  • Espresso: Rámec od Google na testovanie používateľského rozhrania v Android. Používam ho na integračné a UI testy v Android projektoch.

Príklad použitia MockK:

// Importujeme potrebné triedy
import io.mockk.*
import org.junit.jupiter.api.Test

// Príklad triedy, ktorú budeme testovať
class MyService(private val dependency: Dependency) {
    fun processData(data: String): String {
        val processed = dependency.process(data)
        return "Result: $processed"
    }
}

// Trieda závislosti, ktorú budeme mockovať
interface Dependency {
    fun process(input: String): String
}

class MyServiceTest {

    @Test
    fun testProcessData() {
        // Vytvoríme mock závislosti
        val mockDependency = mockk<Dependency>()

        // Definujeme správanie moku
        every { mockDependency.process("input") } returns "processed_data"

        // Vytvoríme inštanciu triedy s mockom
        val myService = MyService(mockDependency)

        // Zavoláme testovanú metódu
        val result = myService.processData("input")

        // Skontrolujeme výsledok
        assert(result == "Result: processed_data")

        // Skontrolujeme, či bola metóda moku zavolaná s očakávaným argumentom
        verify { mockDependency.process("input") }
    }
}