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") }
}
}