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