Sobes.tech
Junior

Jaké knihovny používáte pro testování v Kotlinu?

sobes.tech AI

Odpověď od AI

  • JUnit 5: Standardní rámec pro jednotkové testy v JVM. Používám ho pro většinu jednotkových testů.

  • MockK: Knihovna pro mockování objektů a chování. Je užitečná pro vytváření mocků, stubů a ověřování interakcí mezi objekty.

  • Kotest: Multifunkční rámec pro testování, podporující různé styly psaní testů (Spec, WordSpec, StringSpec atd.). Často ho používám k psaní výstižnějších a strukturovanějších testů.

  • Truth: Knihovna pro tvorbu čitelných assertions. Usnadňuje porozumění testům.

  • Robolectric: Rámec pro testování Android aplikací bez virtuálního zařízení nebo emulátoru. Simuluje prostředí Android na JVM.

  • Espresso: Rámec od Google pro testování uživatelského rozhraní v Androidu. Používám ho pro integrační a UI testy v Android projektech.

Příklad použití MockK:

// Importujeme potřebné třídy
import io.mockk.*
import org.junit.jupiter.api.Test

// Příklad třídy, kterou budeme testovat
class MyService(private val dependency: Dependency) {
    fun processData(data: String): String {
        val processed = dependency.process(data)
        return "Result: $processed"
    }
}

// Třída závislosti, kterou budeme mockovat
interface Dependency {
    fun process(input: String): String
}

class MyServiceTest {

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

        // Definujeme chování mocku
        every { mockDependency.process("input") } returns "processed_data"

        // Vytvoříme instanci třídy s mockem
        val myService = MyService(mockDependency)

        // Zavoláme testovanou metodu
        val result = myService.processData("input")

        // Ověříme výsledek
        assert(result == "Result: processed_data")

        // Ověříme, že metoda mocku byla volána s očekávaným argumentem
        verify { mockDependency.process("input") }
    }
}